【求助】Excel分組列印問題



贊助商連結


小熊逛大街
2005-07-12, 02:49 PM
想請問一下
底下附件Book1.xls裡面有三頁
HAD 表頭
ROW 資料
DATA 要印出來的畫面

因為資料查出來後不確定會產生幾組HAD和ROW
HAD一組搭配數條ROW然後貼到DATA去,列印出來
HAD和ROW與其他組中間用空白一行相隔

請問我要如何先把第一組HAD和ROW貼到DATA後印出
再把DATA資料清掉換下一組列印一直到沒資料為止?

小弟沒學過VB只會簡單的錄製巨集,可以告訴小弟該如何做嗎?感謝 :|||:

贊助商連結


aloz
2005-07-12, 03:50 PM
這個用錄的一定錄不出來...因為有不確定的列數..
應該要寫一段VBA Code吧....
寫法應該是以HAD當master...HAD每列之間不用空白...
一列就去抓ROW裡面的資料...一抓到空白就停...
應該是這樣...@@?

小熊逛大街
2005-07-12, 04:21 PM
這個用錄的一定錄不出來...因為有不確定的列數..
應該要寫一段VBA Code吧....
寫法應該是以HAD當master...HAD每列之間不用空白...
一列就去抓ROW裡面的資料...一抓到空白就停...
應該是這樣...@@?

不好意思,請問是否可以寫個小範例讓我參考一下或是哪邊可以找的到^^"
謝謝!

leonchou
2005-08-05, 04:21 PM
一個巨集就夠,Macro2不需要了。


Sub Macro1()
Sheets("DATA").Select
Set head_cell = [B3] 'HAD要貼的位置
Set rows_cell = [A7] 'ROW要貼的位置
'heads和rowss分別是HAD和ROW的所有資料
Set heads = Sheets("HAD").Cells.SpecialCells(xlCellTypeConstants)
Set rowss = Sheets("ROW").Cells.SpecialCells(xlCellTypeConstants)
'判斷共有幾組資料,逐一進行迴圈
For n = 1 To heads.Areas.Count
'複製第 n 組HAD,以轉置(橫變直)的方式貼上
heads.Areas(n).Copy
head_cell.PasteSpecial Transpose:=True
'清除DATA的ROW區域(不含標題)
rows_cell.CurrentRegion.Offset(1, 0).Clear
'複製第 n 組ROW到DATA的ROW區域
rowss.Areas(n).Copy Destination:=rows_cell
'MsgBox "列印第" & n & "組"
ActiveSheet.PrintOut Copies:=1, Collate:=True
Next n
[A1].Select
End Sub
值得注意的是 SpecialCells,
它的妙用就是可以取得符合指定資料類型(此例為常數)的儲存格物件,
而且因符合的儲存格可能是不連續的範圍區域,
可利用 Areas 取得區域個數及每個區域的內容,
如此就省去判斷每一組資料的位置和範圍了。

補充:
要應用這個程式需注意兩個資料來源 (此例為HAD, ROW) 必須相對應,
除了組數要相同,每組之間也都至少要空一行。
有這些限制是因為巨集是為此案例量身打造的,
要適用別種情形也許要稍做修改。