乐于分享
好东西不私藏

Excel 新版函数组合:多列转单列 + 去重,一步到位

Excel 新版函数组合:多列转单列 + 去重,一步到位
职场里经常遇到这种情况:姓名、产品名分散在多列里,想要提取所有不重复的内容,以前得手动复制粘贴到一列,再点数据去重,反复操作还容易漏。
今天教你TOCOL+UNIQUE组合公式,一行搞定多列转单列 + 去重,自动溢出填充,源数据新增内容实时更新,3 个拓展场景直接套用。

01

先搞懂两个核心函数基础
1. TOCOL:多列转单列函数
核心作用:把多列区域的内容,转换成一竖列的一维数组,是多列去重的核心桥梁。
语法:=TOCOL(区域, [忽略设置], [扫描顺序])
  • 第 1 参数:要转换的多列数据区域;
  • 第 2 参数「忽略设置」:常用3,代表忽略空单元格 + 错误值,避免空内容、#DIV/0! 这类值混入结果;
  • 第 3 参数「扫描顺序」:默认TRUE按列扫描(先扫完 A 列、再 B 列、再 C 列),填FALSE按行扫描(先扫第一行所有列、再第二行)。
2. UNIQUE:去重函数
核心作用:对一维数组去重,只保留不重复的内容,自动溢出成一列。语法:
=UNIQUE(要去重的数组)

02

核心组合公式拆解(对应案例)
需求
A-C 三列分散着多个姓名,有重复内容,想要提取所有不重复的姓名,生成干净的唯一名单。
完整公式
=UNIQUE(TOCOL(A:C,3))
从内到外分步拆解
  • 内层 TOCOL (A:C,3):先把 A-C 三列的所有内容,按列转换成一整列的数组,同时自动忽略空单元格、错误值,得到包含所有姓名的一维列表;
  • 外层 UNIQUE (...):对这个一维列表去重,重复的姓名只保留第一个,最终输出不重复的完整名单,自动向下溢出填充。
效果展示
原数据里重复出现的司马懿、诸葛亮、赵云,公式输出后每个姓名只保留一次,直接得到干净的无重复名单,不用任何手动操作。

03

个高频拓展用法,直接套用
1. 统计不重复内容的数量
需求:不仅要去重名单,还要知道总共有多少个不重复的姓名。公式:
=COUNTA(UNIQUE(TOCOL(A:C,3)))
在核心公式外套一层 COUNTA,直接算出不重复内容的总个数。
2. 按行扫描转单列 + 去重
需求:按行顺序扫描(先扫完第一行所有列,再扫第二行),再去重。公式:
=UNIQUE(TOCOL(A:C,3,FALSE))
TOCOL 第三参数填FALSE,切换为按行扫描模式,适配行优先的多列数据。
3. 多区域多列去重
需求:要同时对 A:C、E:G 两个不连续的多列区域去重。公式:
=UNIQUE(TOCOL(VSTACK(A:C,E:G),3))
先用 VSTACK 把两个区域合并成一个,再用 TOCOL 转单列、UNIQUE 去重,适配分散在不同位置的多列数据。
4. 去重后自动排序
需求:去重后,按姓名拼音 / 数字升序自动排列。公式:
=SORT(UNIQUE(TOCOL(A:C,3)))
在核心公式外套一层 SORT,去重结果直接升序排列,不用手动点排序。

04

避坑关键提醒
  • 版本限制:TOCOL、UNIQUE 都是 Excel 365 专属动态数组函数,2021 及以下旧版本不支持,打开会报 #NAME? 错误;
  • 忽略设置必加:第 2 参数填 3,能自动过滤空单元格和错误值,避免结果里出现空白、错误值;
  • 扫描顺序别搞混:默认按列扫描,要按行扫描必须加第三参数 FALSE,否则顺序会出错;
  • 溢出范围要留空:公式所在单元格的右侧、下方不要有其他数据,否则会出现溢出报错。