ARTICLE · 1016566
Excel中二维表转一维表
Excel中二维表转一维表

有时我们需要将二维表格转换成一维表格,方便后继筛选数据。需求如下图

二维转一维
在 F1 单元格输入公式
=HSTACK( TOCOL(IF(B2:D4<>"",A2:A4)), TOCOL(IF(B2:D4<>"",B1:D1)), TOCOL(B2:D4) )即可得到想要的结果。
广播原理(数组 IF 核心)
当两个数组维度不一样:
行数相同,列数不同:列方向广播(把窄数组复制多列) 列数相同,行数不同:行方向广播(把短数组复制多行)
A2:A4(3 行 1 列) +B2:D4(3 行 3 列) → 列广播,A 列复制 3 份。
其思路如下:
先利用数组IF广播,跟根据二维表的值得到对应的行标题跟列标题。 再用TOCOL函数,将数组转换为列向量。 最后用HSTACK函数,3列数据合并成一维表。
空值处理
当上面的二表中存在空值时,此时行标和列标题会显示为 FALSE ,值列会显示 0 , 如果我们想要行标和列标正常显示,值显示为空。可以对公式如做下修改:
=HSTACK( TOCOL(IF(B2:D4<>"",A2:A4,A2:A4)), TOCOL(IF(B2:D4<>"",B1:D1,B1:D1)), TOCOL(IF(B2:D4<>"",B2:D4,"")) )
