本文转载自公众号:完美Excel,作者:fanjy excelperfect 在实际工作中,我们经常会遇到想将工作表中的数据(如下图1所示的“数据”工作表)导入到固定的表格(如下图2所示)中并打印。 图1 图2 上图1中的数据可能是我们陆续输入到工作表中的,可能是从多个工作表合并的,也可能是从其他地方例如网站上导入的。此时,想要以图2所示的格式打印每条数据信息。如果一行行数据分别录入,则费时费力,特别是遇到成百上千条数据时。 VBA最擅长解决这样的问题。 首先,在工作簿中创建一个名为“表格模板”的工作表,按打印的表格格式化,如下图3所示。 图3 在VBE中输入下面的程序代码: Sub printAllDatas() '数据记录工作表变量 Dim wksDatas As Worksheet '模板工作表变量 Dim wksTable As Worksheet '数据记录工作表中最后一行变量 Dim lngLastRow As Long '循环变量 Dim i As Long '将工作表赋给相应的变量 Set wksDatas = Worksheets('数据') Set wksTable = Worksheets('表格模板') '获取数据记录工作表最后一行行号 lngLastRow = wksDatas.Range('A'& Rows.Count).End(xlUp).Row '遍历数据记录工作表中数据行 '将相应数据填入模板工作表 For i = 2 To lngLastRow '将数据工作表中的数据填入模板 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 运行代码,即可实现数据打印。 代码的图片版如下: 图4 使用VBA,也很容易将数据按图3模板表格形式,拆分成独立的工作表。有兴趣的朋友可以试试。
|
|