Excel 宏

来源:人气:5更新:2024-07-19 06:00:20

Excel透视表的卓越效能广受认可,但其对源数据有严格规定:无合并单元格、无空格、列标题独占一行。日常表格常因美观考量无法满足这些条件。为深化数据分析,通常需要将常规表格转换为透视表。手动操作耗时且易出错,特别是处理多行多列时需剔除零值和空格。因此,宏编程技术在此场景中显得尤为重要,以自动化处理数据流程。

1、 打开源数据(表1),可以看到这个表格是用于计算PPM的,第一个表格的数据是不良零件的数量。第二个表格的数据是总的交付零件数量。数据是月度的统计数据结果。

Excel 宏 - 如何将常规表格转化成透视表格?

2、 为了便于后续程序编写,需要稍微将表格做下改动。主要是将合并的单元格拆开,重复填写相关内容。如本例中将年份重复拆分到每个单元格中。

3、 在Excel中新的表(表2)中,创建透视表格数据标题。如本例中,标题信息为“年”、“月”、“客户”、“不良数量”、“交付数量”总共5列。

Excel 宏 - 如何将常规表格转化成透视表格?

4、 编程前的准备工作就做好了,按Alt F11进入宏页面。如图,鼠标右键单击任何一个Excel表名,点击【插入】,然后点击【模块】,进入宏编程界面。

Excel 宏 - 如何将常规表格转化成透视表格?

5、 在编程界面中,编写如下程序:Sub data()Dim i As IntegerDim j As IntegerDim year As IntegerDim month As IntegerDim ngqty? As IntegerDim dlqty As LongDim cust As StringSheets(1).SelectFor i = 14 To 19? ? For j = 2 To 40? ? ? ? If Cells(i, j) <>"" And Cells(i, j) <> 0 Then? ? ? ? ? ? year = Cells(12, j)? ? ? ? ? ? month = Cells(13, j)? ? ? ? ? ? ngqty = Cells(i - 11, j)? ? ? ? ? ? dlqty = Cells(i, j)? ? ? ? ? ? cust = Cells(i, 1)? ? ? ? ? ? Sheets(2).Select? ? ? ? ? ? Range("A" & Range("A65536").End(xlUp).Row 1) = year? ? ? ? ? ? Range("B" & Range("B65536").End(xlUp).Row 1) = month? ? ? ? ? ? Range("C" & Range("C65536").End(xlUp).Row 1) = cust? ? ? ? ? ? Range("D" & Range("D65536").End(xlUp).Row 1) = ngqty? ? ? ? ? ? Range("E" & Range("E65536").End(xlUp).Row 1) = dlqty? ? ? ? End If? ? ? ? Sheets(1).Select? ? Next jNext i? ? ? End Sub

Excel 宏 - 如何将常规表格转化成透视表格?

6、 程序编写完成后,按快捷键F5执行程序。当然如果源数据不同,程序需要做相应的调整。程序执行完后,在表2就获得整齐的可以透视的数据表了。

Excel 宏 - 如何将常规表格转化成透视表格?

Copyright © 2008-2024