在《Excel实战技巧109:快速整理一列数据拆分成多列》中,我们使用一种巧妙的思路解决了将一列数据拆分成多列的问题。本文介绍使用公式实现的方法。
示例工作簿中的数据如下图1所示。
图1
想把它们转换成如下图2所示。
图2
可以使用下面的公式来实现。在单元格E4中输入数组公式:
=INDEX(A3:A29,ROWS(E4:E4) (COUNTA(E3:G3)-1)*(ROWS(E4:E4)-1) COLUMNS(E3:E3)-1)
向右拖至列G,向下拖至行10,使数据全部显示。
公式中:
- A3:A29,是列A中原数据列表。
- ROWS(E4:E4),统计指定区域的行数,区域通过锁定第一个引用并保留第二个引用为相对引用来扩展。当公式向下拉时,行数将增加(1,然后是 2,3,等等……)。
- COUNTA(E3:G3),得到单元格区域E3:G3中非空单元格数,本例中是3。
- COLUMNS(E3:E3),统计指定区域的列数。区域通过锁定第一个引用并保留第二个引用为相对引用来扩展。当公式向右拉时,列数将增加(1,然后是 2,3,等等……)。
在单元格E4中,公式被解析为:
=INDEX(A3:A29,1 (3-1)*(1-1) 1-1)
进一步得到:
=INDEX(A3:A29,1 (2)*(0) 0)
得到:
=INDEX(A3:A29,1 (2)*(0) 0)
=INDEX(A3:A29,1)
得到单元格A3中的值:
商品1
你可以照此思路,分析一下单元格E5或者F4中的公式,进一步熟悉这个公式。