小伙伴们,早上好!新的一天又开始了,学习的脚步不能停。 今天向大家分享二维表格转一维表的三种方法,分别用到函数、数据透视表和VBA代码。三种方法各有利弊,表亲可以自行选择。 如下图,A1:E5是数据源,A7:C22是最终要实现的结果样式:
函数公式法 A7单元格输入 B7单元格输入 C7单元格输入 公式向下复制,完成。 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两列综合。 透视表法 依次按下Alt、D、P,进入多表透视向导。 选择【多重合并计算数据区域】、创建【数据透视表】 创建单页字段。 选择数据源所在区域并添加 将生成的数据透视表字段设置如下: 报表布局调整为【以表格形式显示】、【重复所有项目标签】 取消分类汇总行和总计 在数据透视表选项中,去掉勾选显示展开/折叠按钮
VBA代码法 按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 按F5运行该段代码,查看结果:
有其他的奇思妙想也可以在下方留言哦,我们下次再见! |
|