语法:
=TOCOL(数组, [忽略类型], [扫描方式])
· 第一参数(必选):要转换的数据区域。
· 第二参数(可选):决定是否忽略空值或错误值。
· 0或省略:保留所有值(空白会显示为0)
· 1:忽略空白单元格
· 2:忽略错误值
· 3:忽略空白和错误值(最常用)
· 第三参数(可选):扫描方向。
· FALSE或省略:按行扫描(从左到右,再换行)
· TRUE:按列扫描(从上到下,再换列)
例:
1. 多列合并成一列(基础用法)
如下图所示,ABC三列有员工名单,想合并到一列。
公式:=TOCOL(A2:C11)

如果选中的数据区域有空白单元格,第二参数填1,忽略空白单元格,名单就能干净地排成一列。
=TOCOL(A2:C13,1)

2. 多表汇总,提取不重复名单
公司有1-4月的考勤表,分布在不同的Sheet里,想提取所有出现过的人员名单。
公式:=UNIQUE(TOCOL('1月 :4月'!A2:A14,1))


先用TOCOL把4个表的A列数据合并成一列,再用UNIQUE去重,一份总名单几秒搞定
3. 按条件筛选并纵向显示
想找出部门为“销售”的所有员工姓名,并纵向排列。(把D1单元格的“销售部”改为“技术部”,返回的值也会改变)
公式:
=TOCOL(IF(B2:B12=D1,A2:A12,NA()),3)

利用IF函数判断,符合条件的返回姓名,不符合的返回错误值#N/A,然后TOCOL配合第二参数3,自动忽略这些错误值,只留下符合条件的姓名。
4. 忽略错误值进行求和
当数据区域中存在#N/A等错误值时,SUM函数会罢工。但TOCOL可以轻松解决。
公式:=SUM(TOCOL(C2:C10, 3))


先用TOCOL把区域转成一列,并设置第二参数为3,把错误值全部过滤掉,再用SUM求和,完美避开错误值干扰。
5. 按指定次数重复数据
如图所示,想让“文具”按“次数”列重复显示。
公式:=TOCOL(IF(B2:B4>=COLUMN(A:Z), A2:A4, NA()), 3)

利用IF判断次数是否大于等于列号,满足条件返回文具名称,不满足返回错误值。最后TOCOL忽略错误值,就得到了按次数重复的一列数据。
6. 二维表转一维表(逆透视)
TOCOL函数最厉害的用法之一。将左侧的二维成绩表,转换为右侧的一维明细表。
需要三个TOCOL公式配合HSTACK函数:
· 姓名列:=TOCOL(IF(B2:D5<>"", A2:A5, NA()), 3)
· 科目列:=TOCOL(IF(B2:D5<>"", B1:D1, NA()), 3)
· 成绩列:=TOCOL(B2:D5, 1)
将三个公式用HSTACK横向拼接,瞬间完成表格维度的转换,比透视表还灵活!


夜雨聆风