小伙伴们,早上好!新的一天又开始了,学习的脚步不能停。
今天向大家分享二维表格转一维表的三种方法,分别用到函数、数据透视表和VBA代码。三种方法各有利弊,表亲可以自行选择。
如下图,A1:E5是数据源,A7:C22是最终要实现的结果样式:
一起动手试试啦!函数公式法
A7单元格输入=OFFSET($A$1,INT((ROW()-7)/4)+1,0)
B7单元格输入=OFFSET($A$1,0,MOD(ROW()-7,4)+1)
C7单元格输入=OFFSET($A$1,INT((ROW()-7)/4)+1,MOD(ROW()-7,4)+1)
公式向下复制,完成。
OFFSET函数通过调整行、列偏移量,改变起始单元格地址,返回现有结果。
以上均以A1为起始单元格。A列的列偏移量始终为0,行偏移量为1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4的数列,以取整函数INT和ROW函数嵌套生成。
B列的行偏移量始终为0,列偏移量为1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4的数列,以求余函数MOD和ROW函数嵌套生成。
C列行列偏移量为A、B两列综合。透视表法1Step1
依次按下Alt、D、P,进入多表透视向导。
选择【多重合并计算数据区域】、创建【数据透视表】
2Step2
创建单页字段。
3Step3
选择数据源所在区域并添加
4Step4
将生成的数据透视表字段设置如下:
5Step5
报表布局调整为【以表格形式显示】、【重复所有项目标签】
6Step6
取消分类汇总行和总计
7Step7
在数据透视表选项中,去掉勾选显示展开/折叠按钮
最终结果如下,可自行调整美化。
VBA代码法
1Step1
按Alt+F11键,进入VBE编辑窗口,输入如下代码:Sub test()
Dim arr, i%, j%, n%
'声明整形变量i,j,n和arr
arr = Range('a1:e5')
'将二维表区域装入数组arr中
n = 1'给i赋初始值1
For i = 2 To UBound(arr)
'双重循环嵌套,先行后列,循环终值各为二维表行列数
For j = 2 To UBound(arr, 2)
Cells(n, 7) = arr(i, 1)
'将数组arr中i行1列数值(即车间信息)写入G列
Cells(n, 8) = arr(1, j)
'将数组arr中1行j列数值(即部门信息)写入H列
Cells(n, 9) = arr(i, j)
'将数组arr中i行j列数值写入I列
n = n + 1
'每一次循环即对n加1,用以改变待写入单元格行数
Next '结束列循环
Next '结束行循环
End Sub
2Step2
按F5运行该段代码,查看结果:
好啦,今天的内容就到这里,希望小伙伴们能有所收获。
有其他的奇思妙想也可以在下方留言哦,我们下次再见!