乐于分享
好东西不私藏

Excel多列转一列TOCOL函数,保姆级教程,建议收藏!

Excel多列转一列TOCOL函数,保姆级教程,建议收藏!

点击蓝字 关注我吧!

今天这篇我们一起来学习可以将多列数据转化为一列的函数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,不见不散~

如果对你有帮助的话,记得点赞、关注再划走哦!