这个Excel新函数,治好了我的精神内耗
- 2026-09-18 03:19:31
做Excel表的人,心里都藏着两个"永远的痛"。
第一个痛,是数据整理。比如从系统里导出的乱七八糟的多列表格,想把它捋成清爽的一列,过去要么靠复制粘贴到手抽筋,要么就得去网上搜那种长得像天书一样的数组公式,一个符号写错,整个表当场"爆炸"。
第二个痛,是表格变形。想把左边的二维流水表,变成右边的一维数据源表,很多人第一反应是"数据透视表"或者"逆透视"。但说真的,那个操作步骤又多又绕,教完一遍,下周准忘。
但Office 365和WPS最新版里,悄悄上线了一个"扫地僧"级别的函数——TOCOL。
说实话,这函数刚出来的时候,大家都觉得它不就是把多列变一列嘛,能有啥大用?直到我实际处理了几个棘手案例,才惊觉之前小看它了。这哪里是合并列,这分明是打通Excel任督二脉的快捷键。
场景一:多列提取不重复值,公式短到离谱
原始数据(A1:C15)
任务: 按行顺序提取所有不重复的公司名称(忽略空单元格)。
操作步骤
随便选一个空白单元格(比如E2),输入下面这个公式,回车,所有不重复名称自动出来:
=UNIQUE(TOCOL(A1:C15,1))

公式拆解:
TOCOL(A1:C15,1) → 把A1到C15整个区域拍扁成一列,参数"1"表示忽略空单元格UNIQUE(...) → 把上一步得到的一列数据中的重复值去掉场景二:二维表转一维表,告别繁琐的"逆透视"
原始数据(B2:H11)
任务: 把上面的二维汇总表,转换成下面这样的一维明细表(月份、项目、数值三列)。
操作步骤
在空白区域分别输入以下三个公式(比如从K2、L2、M2开始):
第一列(数值),在K2输入:=TOCOL(B2:G10,1)
第二列(月份),在L2输入:=TOCOL(IF(B2:G10="",0/0,B1:G1),3)
第三列(项目),在M2输入:=TOCOL(IF(B2:G10="",0/0,A2:A10),3)
三个公式的原理:
结果预览:

原表格里所有的空值都被自动跳过,行列完全对应,一个数据都不乱。 整个操作就三个公式,源数据一变,结果自动更新。
场景三:跨表合并,这才是终极大招
场景描述
你的工作簿里有三张表,分别叫"北京"、"上海"、"郑州",每张表的格式完全一样,都是A列姓名、B列部门(A2:B134)。
任务: 把三张表里的所有姓名合并到一张总表的一列中。
操作步骤
在总表的任意空白单元格输入:
=TOCOL(北京:郑州!A2:A134,1)

就是这么短。 一个公式跨三张表,把指定区域全部捏成一列,空单元格自动忽略。
原理说明:
北京:郑州! 表示从"北京"这张表到"郑州"这张表之间的所有工作表A2:A134 是要取的单元格范围如果你有5张表(北京、上海、广州、深圳、郑州),写法完全一样,系统会自动把北京到郑州之间所有表都包含进来。
写在最后
以前我们总觉得Excel玩得溜,就得背下一堆晦涩的嵌套组合。但TOCOL这个函数让我意识到,好的工具不是让你变得更累,而是让你变得更"懒"。
它干的活很简单,就是"降维打击"——把复杂的高维数据拍平。但恰恰是这一步,盘活了我们后续所有的数据分析流程。
小提醒
TOCOL目前支持 Microsoft 365 和 WPS最新版(2023年12月之后版本)。如果你用的是Excel 2021或更早版本,暂时用不了。
如果在WPS里找不到这个函数,检查是否开启了"动态数组"功能,或者直接更新到最新版即可。
如果觉得有用,点个"在看"分享给那个天天被表格折磨的同事吧,他早晚会回来谢你的。