乐于分享
好东西不私藏

Excel 里的“数据整理师”:专治各种表格杂乱!

Excel 里的“数据整理师”:专治各种表格杂乱!
今天给大家介绍一位表格界的‘数据整理师’——TOCOL函数。
它的核心作用简单到只有一句话:把区域中的数据,按你指定的方向整理成一列,并且还自带“滤网”,能自动筛掉你不需要的空格或错误值。

01

TOCOL函数到底有什么用? 

原来的数据可能是这样的:

现在要把这些名字全部整理到一列,以前做法可能是:

  1. 复制 A 列,粘贴;
  2. 复制 B 列,接着粘贴;
  3. 复制 C 列,再接着粘贴;

但现在用TOCOL,只需要一个公式就能搞定

=TOCOL(A2:C4)

02

基础语法 

=TOCOL(要整理的区域, [是否忽略空白或错误], [按行或按列读取])

第1个参数:把你要整理的那堆单元格框选给它,比如A1:E9

第2个参数:忽略方式

  • 输入0或不填:全盘照收,连空格和报错都留着。

  • 输入1自动剔除所有空白单元格。

  • 输入2:剔除错误值(比如#N/A#VALUE!这些)。

  • 输入3:空格和错误值统统不要,只留有效数据。

第3个参数:读取方式

  • 输入FALSE或不填,就是逐行扫描(先读完第一行再读第二行)

  • 输入TRUE就是逐列扫描,(先读完第一列再读第二列)

(版本提示:这个函数需要最新版WPS或Excel 2021以上才能使用)

03

6个高频场景,一看就会用

1. 多列名单整理成一列
会议通知名单分散在表格的多行多列,一眼望去乱糟糟的,并且还有空白单元格,想要把它们快速整理成一列,方便做签到名单或人数统计。

在F2单元格里输入:=TOCOL(A2:D5,1)

公式解读
TOCOL :把 A2:D5 这个区域里的所有姓名,按顺序整理成一列,并自动剔除所有空白单元格。
2. 提取去重后的人员名单
会议通知名单分散在多行多列里,中间还夹杂着重复人员。用 TOCOL 搭配 UNIQUE,就能把零散的姓名快速整理成一列,并自动去掉重复项,快速生成一份干净的会议通知名单。

在F2单元格里输入:=UNIQUE(TOCOL(A2:D5,1))

公式解读
TOCOL:把 A2:D5 区域中分散在各行各列的姓名,按列整理成一列;并去掉空白单元格。UNIQUE对整理出来的一列名单进行去重,自动去掉重复人员,生成一份干净的名单。
3. 筛选数据
有一份成绩名单,A列是姓名,B列是分数。想提取出“大于等于 60 分”的人员姓名,用 IF + TOCOL 就能一键生成及格名单。

在D4单元格里输入:=TOCOL(IF(B2:B10>=60,A2:A10,y),3)

公式解读
IF:判断 B2:B10 的分数是否大于等于 60,符合条件就返回 A 列对应的姓名;不符合条件就返回没有加引号的 y,让 Excel 生成错误值。
TOCOL:把 IF 返回的结果整理成一列;第二参数 3 表示忽略空白和错误值。
4. 横向表格一键转竖向
左边是一张横向值班表,日期在首列,值班人员分散在右侧多列。想要整理成“日期 + 值班人员”的竖向规范表,用 TOCOL + HSTACK 就能一键完成。

在F2单元格里输入:=HSTACK(TOCOL(IF(B2:D6<>"",A2:A6,y),2),TOCOL(B2:D6,1))

公式解读
公式分为两部分
1、先用 IF(B2:D6<>"",A2:A6,y) 判断 B2:D6 区域是否有值班人员。

如果有值班人员,就返回 A 列对应的日期;如果是空白单元格,就返回没有加引号的 y,让 Excel 生成错误值。

再用 TOCOL(...,2)把日期整理成一列,第二参数 2 表示忽略错误值,所以只保留有值班人员对应的日期。

2、把 B2:D6 区域里的值班人员整理成一列,第二参数 1 表示忽略空白单元格。最后用 HSTACK 把前面生成的“日期列”和“值班人员列”左右拼接,得到“日期 + 值班人员”的竖向规范表。

      5. 标签按次数重复
      A列是物料名称,B列是打印数量,物料标签需要按数量重复生成时,TOCOL搭配IF就可以根据打印数量一键生成完整标签列表。

      在D2单元格里输入:=TOCOL(IF(B2:B5>=COLUMN(A:Z),A2:A5,y),2)

      公式解读
      公式分为两部分
      1、COLUMN(A:Z) 会生成 1 到 26 的序号;IF(B2:B5>=COLUMN(A:Z),A2:A5,y):用 B 列打印数量和COLUMN(A:Z) 生成的序号做比较,符合次数就返回对应物料名称,不符合就返回没有加引号的 y,让 Excel 生成错误值。
      2、TOCOL(...,2):把结果整理成一列,第二参数 2 表示忽略错误值,只保留需要生成的标签内容。
      注意事项:如果要重复 26 次以上,只需要把 A:Z 改成 A:AZ,公式就能支持更多重复次数。
      6. 跨表合并后去重
      公司组织了多门培训课程,比如 Excel课、PPT课、AI办公课,每门课程的报名名单分别放在不同工作表里。
      现在想汇总所有课程的报名人员,并自动去掉重复姓名,生成一份完整的参训人员名单。

      在A1单元格里输入:=UNIQUE(TOCOL('Excel课:AI办公课'!A:A,1))

      公式解读

      TOCOL('Excel课:AI办公课'!A:A,1):把 Excel课 到 AI办公课 这几个连续工作表中 A 列的姓名,全部合并整理成一列;第二参数 1 表示忽略空白单元格。

      UNIQUE(...):对合并后的名单进行去重,只保留不重复的姓名,就能得到一份完整、干净的不重复报名名单。