【求助】Excel分組列印問題 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- OFFICE 相 關 軟 體 討 論 版


PCZONE 討論區



通知

-- OFFICE 相 關 軟 體 討 論 版 Word、Excel、PowerPoint、Access、Outlook、FrontPage或Office XP等的問題解答與經驗分享

會員
【求助】Excel分組列印問題
想請問一下
底下附件Book1.xls裡面有三頁
HAD 表頭
ROW 資料
DATA 要印出來的畫面

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

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

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

上傳的附加檔案
檔案類型: zip Book1.zip (7.4 KB, 19 次觀看)
回覆
會員

這個用錄的一定錄不出來...因為有不確定的列數..
應該要寫一段VBA Code吧....
寫法應該是以HAD當master...HAD每列之間不用空白...
一列就去抓ROW裡面的資料...一抓到空白就停...
應該是這樣...@@?
回覆
會員

引用:
作者: aloz
這個用錄的一定錄不出來...因為有不確定的列數..
應該要寫一段VBA Code吧....
寫法應該是以HAD當master...HAD每列之間不用空白...
一列就去抓ROW裡面的資料...一抓到空白就停...
應該是這樣...@@?
不好意思,請問是否可以寫個小範例讓我參考一下或是哪邊可以找的到^^"
謝謝!
回覆
Take it easy~

一個巨集就夠,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) 必須相對應,
除了組數要相同,每組之間也都至少要空一行。
有這些限制是因為巨集是為此案例量身打造的,
要適用別種情形也許要稍做修改。

回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。