本文轉(zhuǎn)載自公眾號:完美Excel,作者:fanjy
excelperfect
在實際工作中,我們經(jīng)常會遇到想將工作表中的數(shù)據(jù)(如下圖1所示的“數(shù)據(jù)”工作表)導入到固定的表格(如下圖2所示)中并打印。
圖1
圖2
上圖1中的數(shù)據(jù)可能是我們陸續(xù)輸入到工作表中的,可能是從多個工作表合并的,也可能是從其他地方例如網(wǎng)站上導入的。此時,想要以圖2所示的格式打印每條數(shù)據(jù)信息。如果一行行數(shù)據(jù)分別錄入,則費時費力,特別是遇到成百上千條數(shù)據(jù)時。
VBA最擅長解決這樣的問題。
首先,在工作簿中創(chuàng)建一個名為“表格模板”的工作表,按打印的表格格式化,如下圖3所示。
圖3
在VBE中輸入下面的程序代碼:
Sub printAllDatas()
'數(shù)據(jù)記錄工作表變量
Dim wksDatas As Worksheet
'模板工作表變量
Dim wksTable As Worksheet
'數(shù)據(jù)記錄工作表中最后一行變量
Dim lngLastRow As Long
'循環(huán)變量
Dim i As Long
'將工作表賦給相應的變量
Set wksDatas = Worksheets('數(shù)據(jù)')
Set wksTable = Worksheets('表格模板')
'獲取數(shù)據(jù)記錄工作表最后一行行號
lngLastRow = wksDatas.Range('A'& Rows.Count).End(xlUp).Row
'遍歷數(shù)據(jù)記錄工作表中數(shù)據(jù)行
'將相應數(shù)據(jù)填入模板工作表
For i = 2 To lngLastRow
'將數(shù)據(jù)工作表中的數(shù)據(jù)填入模板
With wksDatas
wksTable.Range('B3') =.Range('A' & i)
wksTable.Range('F3') =.Range('B' & i)
wksTable.Range('B4') =.Range('C' & i)
wksTable.Range('D4') =.Range('D' & i)
wksTable.Range('F4') =.Range('E' & i)
wksTable.Range('B5') =.Range('F' & i)
wksTable.Range('F5') =.Range('G' & i)
wksTable.Range('B6') =.Range('H' & i)
wksTable.Range('F6') =.Range('I' & i)
wksTable.Range('B7') =.Range('J' & i)
wksTable.Range('B8') =.Range('K' & i)
End With
'打印
wksTable.PrintOut
Next i
End Sub
運行代碼,即可實現(xiàn)數(shù)據(jù)打印。
代碼的圖片版如下:
圖4
使用VBA,也很容易將數(shù)據(jù)按圖3模板表格形式,拆分成獨立的工作表。有興趣的朋友可以試試。