hello大家好,我是小E,日常工作中,我们喜欢用二维表展示数据,清楚明了,如下图左边所示,但从数据处理分析的角度考虑,二维表没有一位表方便。

有些情况下,需要将二维表转换成一位表,今天我们介绍四种方法实现二维表的转换,不管你的Excel是哪一版本,总有一种方法适合你哦。

方法一 公式法

G2单元格内输入公式:

=INDEX(A:A,(ROW(A1)-1)/4+2)

H2单元格内输入公式:

=INDEX(B$1:E$1,MOD(ROW(A1)-1,4)+1)

I2单元格内输入公式:

=OFFSET($A$1,(ROW()-2)/4+1,MOD(ROW()-2,4)+1)

公式下拉,搞定~

方法二 数据透视表

依次点击Alt、D、P三键(注意是依次点击,不是一起按),调出数据透视表和数据透视图向导;

接着勾选“多重合并计算数据区域”—“下一步”—“下一步”,选定区域框选二维表区域,最后点击“下一步”—“确定”。

在建立的透视表界面中,将字段“列”拖动到行区域,之后点击【设计】,报表布局中依次点击”以表格形式显示“、”重复所有项目标签“;总计中点击”对行和列禁用“;分类汇总中点击”不显示分类汇总“,二维表转换完成~

方法三 Power Query

依次点击【数据】,【来自表格/区域】,点击确定按钮,进入Power Query编辑界面。

接着选中首列,依次点击【转换】,下拉”逆透视列“,选择”逆透视其它列“,可以发现二维表已经被转换成了一维表,关闭并上载即可,搞定~

注意:此方法的前提是Excel版本得是2016版本或者2019版本,不然得下载Power Query插件才可使用。

方法四 VBA

Alt+F11,调出Visual Basic界面,输入以下代码。

运行代码,二维表转换完成~

完整代码如下所示:

Sub 转换() Dim i%, j%, a%, arr arr = Range("a1:e6") Cells(1, 7) = "部门" Cells(1, 8) = "年份" Cells(1, 9) = "销售额" a = 2 For i = 2 To UBound(arr) For j = 2 To UBound(arr, 2) Cells(a, 7) = arr(i, 1) Cells(a, 8) = arr(1, j) Cells(a, 9) = arr(i, j) a = a + 1 Next Next End Sub

小结

综合来看,四种方法中,Power Query是最简单的,VBA十分快捷,公式法和透视表法各有所长。

那么问题来了,如何将一维表转换二维表