分享

二维表转换一维表,三种方法一网打尽!

 碧荷晨露 2016-06-24

小伙伴们,早上好!新的一天又开始了,学习的脚步不能停。

今天向大家分享二维表格转一维表的三种方法,分别用到函数、数据透视表和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两列综合。


透视表法

1
Step1 

依次按下Alt、D、P,进入多表透视向导。

选择【多重合并计算数据区域】、创建【数据透视表】


2
Step2 

创建单页字段。


3
Step3 

选择数据源所在区域并添加


4
Step4 

将生成的数据透视表字段设置如下:


5
Step5 

报表布局调整为【以表格形式显示】、【重复所有项目标签】

6
Step6 

取消分类汇总行和总计


7
Step7 

在数据透视表选项中,去掉勾选显示展开/折叠按钮


最终结果如下,可自行调整美化。


VBA代码法

1
Step1 

按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


2
Step2 

按F5运行该段代码,查看结果:


好啦,今天的内容就到这里,希望小伙伴们能有所收获。

有其他的奇思妙想也可以在下方留言哦,我们下次再见!


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多