矩阵图怎么变成表,矩阵图绘制与分解

首页 > 职场 > 作者:YD1662023-10-29 15:08:15

楼主要求用VBA解决,我们想到三种方法,一起来看一下吧(原表的行列字段有微调):

VBA代码法

Sub TransFormData() Dim arrData(), arrTem() Dim wsSource As Worksheet, wsTarget As Worksheet Dim iRow As Integer, iCol As Integer Dim i As Integer, j As Integer, k As Integer Set wsSource = Sheets("原表") arrData = wsSource.Range("A1").CurrentRegion.Value iRow = UBound(arrData, 1) iCol = UBound(arrData, 2) Dim totalRows As Integer totalRows = (iRow - 1) * (iCol - 1) 1 ReDim arrTem(1 To totalRows, 1 To 3) arrTem(1, 1) = "ITEM" arrTem(1, 2) = "数量" arrTem(1, 3) = "日期" k = 1 For i = 2 To iCol For j = 2 To iRow k = k 1 arrTem(k, 1) = arrData(j, 1) arrTem(k, 2) = arrData(j, i) arrTem(k, 3) = arrData(1, i) Next Next '检查表"转置"是否存在,存在则清空,不存在则添加 On Error Resume Next Set wsTarget = Worksheets("转置") On Error GoTo 0 If wsTarget Is Nothing Then Set wsTarget = Sheets.Add(After:=Sheets(Sheets.Count)) wsTarget.Name = "转置" Else wsTarget.Cells.Clear ' 清除 End If '输出到 "转置" 表 wsTarget.Range("A1").Resize(totalRows, 3).Value = arrTem End Sub

代码解析:

1、把原始数据读入数组arrData()。

2、根据数据行、列的数量,重新定义目标数组arrTem()。

3、循环数组arrData()的行、列,把数据写入数组arrTem()。

4、把结果写入工作表“转置”。

函数公式法

1、在表“公式”中输入表头。

2、在A2单元格输入公式:

=INDEX(原表!$A$2:$A$158,MOD(ROW(A1)-1,ROWS(原表!$A$2:$A$158)) 1,1)

3、在B2单元格输入公式:

=INDEX(原表!$B$2:$Y$158,MOD(ROW(A1)-1,ROWS(原表!$A$2:$A$158)) 1,INT((ROW(A1)-1)/ROWS(原表!$A$2:$A$158) 1))

4、在C2单元格输入公式:

=INDEX(原表!$B$1:$Y$1,1,INT((ROW(A1)-1)/ROWS(原表!$A$2:$A$158) 1))

5、选中A2:C2,往下拖,直到出现错误值为止。

6、也可以在上述公式前增加IFERROR函数容错。

数据透视表

1、选中所有列,插入数据透视,选择新建工作表。

2、把ITEM字段加到行,日期字段都加到“值”。

3、把右上列框里的∑数值拖到行:

矩阵图怎么变成表,矩阵图绘制与分解(5)

则变成这样:

矩阵图怎么变成表,矩阵图绘制与分解(6)

4、在设计菜单-->报表布局,选择“以表格形式显示”,再右击“ITEM”,字段设置-->布局和打印-->重复项目标签,结果如下:

矩阵图怎么变成表,矩阵图绘制与分解(7)

5、复制整个表,粘贴为数值(如果需要重复使用这个数据透视表的,可以复制粘贴到另一张表)。

6、筛选删除空白、汇总项目,把所有“求和项:”替换为空,搞定。

喜欢就点个、点在看留个言呗!需要示例文件的朋友请关注同名V公众号查看文件获取方式。

上一页12末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.