点击蓝字 关注我吧!
今天这篇我们一起来学习可以将多列数据转化为一列的函数TOCOL。
本期导航
01 功能语法
02 基础用法
03 实用场景
04 注意事项
文末有练习文档获取方式哟~
一、功能语法
TOCOL中的COL是COLUMN(列)的简写。
TOCOL的功能就是将一个数组或者区域转换为一列(垂直方向的单列)。
=TOCOL(数组,[忽略特殊值],[通过列扫描])
第1参数:数组【必填】
要转换的数组或区域
第2参数:忽略特殊值【可选】
0或省略:不忽略任何值(保留全部)
1:忽略空白单元格
2:忽略错误值
3:忽略空白单元格和错误值
第3参数:通过列扫描【可选】
FALSE、0或省略:按行扫描(从左到右,逐行合并)
TRUE、1:按列扫描(从上到下,逐列合并)
TOCOL是动态数组函数:
结果会自动“溢出”到相邻的单元格;
如果源数据有变动,提取后的表格也会实时更新。
二、基础用法
先看几个简单列子,数据源是A1~C3区域:

1.默认转换
=TOCOL(A1:C3)
或
=TOCOL(A1:C3,0)
将A1~C3区域转化为一列,逐行拼接。其中,B2的空白单元格在转化后显示为0,A3的错误值#N/A也被保留。

2.忽略空白
=TOCOL(A1:C3,1)

忽略了B2的空白单元格,其他数据全部保留。
3.忽略错误
=TOCOL(A1:C3,2)

忽略了A3的错误值#DIV/0!,其余数据全部保留。
4.忽略空白和错误值
=TOCOL(A1:C3,3)

同时忽略B2的空单元格和A3的错误值,只保留有效数据。
5.按列扫描
=TOCOL(A1:C3,3,1)

第2参数为3:忽略了B2的空单元格和A3的错误值。
第3参数为1:按列扫描,依次提取A列、B列、C列的数据合并在一起。
二、实用场景
1.提取多列数据的唯一值
【要求】
从多列参赛名单中,提取出不重复的名单。
【公式】
=UNIQUE(TOCOL(A2:C12,3))

【解析】
UNIQUE函数只能对单行单列数据去重,无法直接处理多列区域。
因此,先用TOCOL把数据拼接为一列,再用TOCOL去重。
2.合并多月数据
【要求】
把1、2、3月三个结构相同的分表数据汇总到一张表格中,并且在分表新增数据,总表也能自动更新。
【方法】
1.新建一张汇总表,表头和各分表保持一致。
2.在A1单元格输入公式:
=TOCOL('1月:3月'!A2:A1000,1)
3.再把公式向右填充到E2单元格就可以了。

【解析】
1.范围选择到1000行,是为了确保未来新增数据也能被纳入;第2参数选择1,能忽略多选进来的空单元格。
2.特别提醒:使用这个方法,要确保分表的数据都没有空格,否则数据会错位。可以使用VSTACK按工作表顺序垂直堆叠。
3.二维表转化为一维表
【要求】
把左边的二维表转化成右边的一维表格。

【方法】
在F2输入:
=TOCOL(IF(B2:D6<>"",A2:A6,""))
用IF判断,如果数值区域非空,则返回对应的行标题(姓名),否则返回空。TOCOL再将这些姓名合并成一列,忽略空值。
在G2输入:
=TOCOL(IF(B2:D6<>"",B1:D1,""))
同理,返回对应的列标题(月份)。
在H2输入:
=TOCOL(IF(B2:D6<>"",B2:D6,""))
同理,返回数组本身。
三、注意事项
1.TOCOL只会将真正“空空如也”的单元格视为空白并忽略。数字0、公式返回的空文本(“”)不会被忽略。
2.版本限制:Microsoft 365、Excel 2024和新版的WPS可以使用这个函数。
3.TOCOL处理超大数据时可能报错。Excel规定动态数组公式一次最多只能输出1048575行,比工作表的最大行数1048576故意少了1行——这是为了在公式结果下方留一个空行,方便后续操作。只要原始数据单元格总数超过1048575,TOCOL就会返回#NUM!错误。
后台回复:TOCOL,可以获得练习案例哟!下期我们聊聊它的兄弟函数TOROW,不见不散~
如果对你有帮助的话,记得
点赞、关注
再划走哦!
夜雨聆风