目录
在编辑Excel文件的工作中遇到一个需求,需要对多列数据进行排列组合,每列数据比较多,可能有几十上百个,如果手动进行一个一个的排列组合费时费力不说,还容易有缺漏重复,于是我就想如果能在表内实现自动排列就好了。因此,我上网查了很多相关教程,其中不乏能有效解决需求的,但这些方法要么是得用代码的,要么是步骤复杂的,都不够方便快捷,在经过多次摸索尝试后,终于总结出了如下解决方案。
两列数据的排列组合
公式
TOCOL(列一单元格范围&TOROW(列二单元格范围))
示例
如果想把下表的A、B两列数据进行排列组合,并将结果罗列在列C,那么需要在C2单元格内输入 =TOCOL(A2:A4&TOROW(B2:B4))
输入完成后按下回车键应用公式,其结果便会自动更新进相应单元格
三列数据的排列组合
公式
TOCOL(TOCOL(列一单元格范围&TOROW(列二单元格范围))&TOROW(列三单元格范围))
示例
如果想把下表的A、B、C三列数据进行排列组合,并将结果罗列在列D,那么需要在D2单元格内输入 =TOCOL(TOCOL(A2:A4&TOROW(B2:B3))&TOROW(C2:C4))
输入完成后按下回车键应用公式,其结果便会自动更新进相应单元格
更多列数据的排列组合
根据上述两个公式不难发现规律,多列数据的排列组合公式实际上是对公式 TOCOL(列一&TOROW(列二))
的嵌套使用,公式中“列一”就是嵌套的位置。由此可得:
- 四列数据排列组合公式:
TOCOL(TOCOL(TOCOL(列一&TOROW(列二))&TOROW(列三))&TOROW(列四)) - 五列数据排列组合公式:
TOCOL(TOCOL(TOCOL(TOCOL(列一&TOROW(列二))&TOROW(列三))&TOROW(列四))&TOROW(列五)) - ……
核心公式解析
上述这些虽然这些公式看起来有点复杂,但是其最核心的公式只有两个:TOCOL()
和 TOROW()
。
TOCOL 公式
TOCOL()
以一列的形式返回数组,即可将指定区域内所有单元格的数据排列为一列数据。其中小括号内需填写单元格范围。例如:
- 一行数据转一列数据:
TOCOL(A1:C1)
- 多行数据转一列数据:
TOCOL(A1:B4)
- 一列数据与一行数据组合后转为一列数据:
TOCOL(A2:A4&B1:C1)
TOROW 公式
TOROW()
以一行的形式返回数组,即可将指定区域内所有单元格的数据排列为一行数据。其中小括号内需填写单元格范围。例如:
- 一列数据转一行数据:
TOROW(A1:A3)
、 - 多列数据转一行数据:
TOROW(A1:B4)
、 - 一列数据与一行数据组合后转为一行数据:
TOROW(A2:A4&B1:C1)
& 运算符
除了上述两个公式之外,还有一个必不可少的符号参与了公式运算,那就是 &
。
当在公式 TOCOL()
和 TOROW()
的小括号内使用 &
连接了一列数据和一行数据时,公式会将这两组数据进行排列组合,得出一组新的数据,再将其以一列或一行的形式展示。以 TOCOL(A2:A4&B1:C1)
为例,假设其中“A2:A4”所指向的一列数据是“A、B、C”,“B1:C1”所指向的一行数据是“1、2”,则该公式将会先得出“A2:A4&B1:C1”的计算结果为“A1、A2、B1、B2、C1、C2”,然后再将其以一列的形式展示。
通过公式和运算符的搭配使用,能很方便地将两组数据进行排列组合得到一组新的数据。如果将这组新数据再与另一组数据重复一遍使用过程,便实现了三组数据的排列组合。那如果拿结果再与其它数据重复一遍呢?当然是实现了四组数据的排列组合。依照着这个思路下去,更多列数据的排列组合公式也就显而易见了。