多语言展示
当前在线:921今日阅读:27今日分享:41

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

Excel中透视表的强大功能相信很多人都深有体会。但是透视表的应用对源数据的要求是较高的,表格中不能有合并的单元格,不能有空格,列标题只能有一行。而日常使用的表格往往为了目视美观等原因,表格格式做不到透视表要求的那样。为了进一步对数据进行分析,那就需要将日常常规表格转换为透视表了。如果一个个数据拷贝的话,会花很多时间;如果多行多列拷贝的话,又需要排除里面夹杂的零值或空格。所以这就需要运用到宏,用程序来处理这些数据。
工具/原料
1

源数据

2

Excel 2016

方法/步骤
1

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

2

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

3

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

4

编程前的准备工作就做好了,按Alt + F11进入宏页面。如图,鼠标右键单击任何一个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

6

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

7

选择表2数据,就可以快速进行透视数据分析了。是不是很高效呢?

注意事项
1

数据不同,表格不同,对应的程序也需要进行一定的修改才能正确运行

2

关于透视表的操作,可以参考本人另外一个经验

推荐信息