想把分散在多列的数据快速合并成一整列,excel 365里最省事的方法就是直接用tocol函数。不管是横向排布的部门名单、商品清单还是项目编号,用它几秒钟就能全部收拢成单列数据,后续再做去重、做下拉菜单、配置数据验证都要顺手不少。
本次操作全程用Excel 365中文版演示,我们拿一组四列的样例数据,把TOCOL的基础用法、忽略空白的写法、按行展开的写法挨个讲清楚。

第一步:先准备好多列原始数据和结果列
先把要处理的原始数据放在连续的单元格区域里,这次示例用的区域是A2:D5。只要数据所在的区域是连续的,TOCOL就能一次性全部处理完。要输出结果的列最好提前清空,别让溢出生成的结果撞到旁边已有的内容,不然公式直接就报错。

第二步:先用最基础的 TOCOL 把多列压成一列
在准备放结果的第一个单元格里输入 =TOCOL(A2:D5),按回车之后,Excel会直接把A2:D5这块区域的所有内容合并成一整列。默认规则是按列往下取值:先取完第一列的所有内容,再接第二列、第三列、第四列,最终效果就是把每一列首尾相接拼成单列。
要是你只需要最基础的多列转单列效果,写到这一步就完全够用了。

第三步:遇到空白单元格时,加第二个参数忽略空白
如果原始数据区域里有空单元格,直接用上面的基础写法,生成的结果里也会跟着出现空白行。这时候把公式改成 =TOCOL(A2:D5,1) 就好。第二个参数填1,作用就是自动忽略空白单元格,最后得到的单列数据干干净净,后续拿来当数据源也不会多出没用的空行。
这个用法特别适合整理不规则的人员名单、月度汇总表,或是分多列录入的零散数据。

第四步:如果想按行展开,而不是按列展开,就加第三个参数
TOCOL默认是按列扫描数据的,如果你想要的效果是“先把第一行的所有内容排完,再接第二行的内容”,改成横向逐行读取,就把公式写成 =TOCOL(A2:D5,,TRUE)。第三个参数填TRUE,代表按行扫描原始区域,出来的结果顺序和你平时横向读表格的习惯完全一致,做明细拼接的时候会更顺手。
这里第二个位置直接空着、打两个逗号跳过就行;要是你同时还想要忽略空白,也可以把参数写全,比如 =TOCOL(A2:D5,1,TRUE)。
如果输完公式按回车之后,结果没有正常溢出铺满整列,先看结果列的下方是不是还有之前残留的旧内容挡住了,把占位置的单元格清空,再核对一遍公式,基本就能正常展开了。


















