在处理Excel表格时,我们经常会遇到数据分散在多行多列的情况。比如值班表、签到表或名单表,姓名分布在多个列中,想要整合成一列进行后续处理,excel中有一个专门解决这个问题的函数——TOCOL,它能把多列区域转换为单列。
一、TOCOL函数语法
=TOCOL(要转换的数组或引用, [是否忽略指定类型的值], [按行/列扫描])
三个参数说明:
- 第一参数:要转换的数据区域
- 第二参数:0或省略保留所有值,1忽略空白,2忽略错误,3忽略空白和错误
- 第三参数:省略或FALSE按行扫描,TRUE按列扫描
二、实战案例:多行多列提取员工名单
如下图所示,值班表中姓名分布在B2:D8的多行多列区域,有些单元格是空的。现在需要提取出不重复的人员名单。
在F2单元格输入以下公式,按回车即可:=UNIQUE(TOCOL(B2:D8, 1))
公式拆解:
- TOCOL(B2:D8, 1):把B2:E8区域中的姓名转换为一列,第二参数1表示忽略空白单元格
- UNIQUE(…):对转换后的单列名单去重,只保留每个姓名第一次出现
结果自动溢出到G列下方,生成一份干净的不重复名单。

三、更多用法
忽略错误值:如果数据区域中有错误值,第二参数用2或3:
=TOCOL(B2:E8, 3)
按列扫描:默认按行扫描(先第一行所有列,再第二行)。如需按列扫描,第三参数设为TRUE:
=TOCOL(B2:E8, 1, TRUE)
不忽略任何值:省略第二参数或设为0,空白单元格会显示为0。
四、使用注意
版本要求:TOCOL函数仅支持Excel 2021、Office 365和最新版WPS,旧版本无法使用。
结果溢出:TOCOL返回动态数组,结果自动填充到下方单元格。目标区域有其他内容时会报错 #SPILL!。
五、总结
TOCOL函数的核心作用是把多行多列的数据“拉直”成一列。搭配UNIQUE可以快速提取不重复名单,搭配其他函数还能实现更多数据处理。掌握这个函数,多列数据整合不再是难题!