WPS表格分列与合并,数据清洗必备技能

发布日期:2026-06-06     浏览次数:6

刚入职的数据分析助理小刘,接到了第一周的"见面礼"——一份从公司旧系统导出的客户信息表。5000行数据,每一行只有一个单元格,里面塞满了用逗号拼接的信息:"张三,男,1988,研发部,高级工程师,2015-03-01"。

"把它拆成六列,姓名、性别、出生年份……" 主管轻描淡写地说。

小刘深吸一口气,准备开始手工——复制、粘贴、复制、粘贴——然后他旁边的老员工拍了拍他的肩膀:"别急,先学学分列。"

十分钟后,5000行数据被拆成了规整的六列。小刘对 WPS 表格的认知从此被刷新。

这是数据清洗中最常见的场景:数据以各种奇怪的方式粘在一起,你需要把它们拆开;或者反过来,分散在多个单元格的信息需要拼成一段完整的文本。本文通过七种方法,系统讲解 WPS 表格中的分列与合并操作,覆盖你工作中会遇到的实际场景。


一、分列三法:快速拆散"粘在一起"的数据

1.1 方法一:分列向导——最直观的拆分工具

分列向导是 WPS 表格内置的专属拆分工具,适合处理具有明显分隔符的数据,也是应对"一列变多列"最常见的方法。

典型场景:单元格内容为"张三,男,1988,研发部",以逗号分隔,需拆为四列。

操作步骤

  1. 选中要拆分的数据列(可以选一整列或一个区域)。
  2. 点击「数据」→「分列」。
  3. 弹出「文本分列向导 - 第1步」,选择「分隔符号」,点击「下一步」。
  4. 在分隔符号选项中,勾选数据中实际使用的分隔符:
    • 逗号(,)—— 最常见的CSV格式
    • 制表符(Tab)—— 从文本文件粘贴的数据常用
    • 空格 —— 姓名拆分姓和名
    • 分号(;)—— 某些系统的导出格式
    • 其他 —— 自定义任意字符,如"|"、"@"等
  5. 下方预览窗口会实时显示拆分效果。确认无误后点击「下一步」。
  6. 在「列数据格式」中选择各列的数据类型:
    • 常规:数值转数字,日期转日期,其余保留文本。
    • 文本:强制保持文本格式(身份证号、电话号码必须选此项,否则会变成科学计数法)。
    • 日期:按指定格式解析为日期。
  7. 点击「完成」,一列秒变多列。

关键提示:拆分身份证号、银行卡号等长数字时,第3步必须将该列格式设为"文本",否则18位身份证号的最后三位会变成0。

1.2 方法二:固定宽度拆分——无分隔符时的利器

当数据之间没有统一的分隔符,但位置固定时,使用固定宽度拆分。

典型场景:身份证号前6位是地区码,中间8位是出生日期,后4位是顺序码。没有分隔符,但宽度固定。

操作步骤

  1. 选中数据列→「数据」→「分列」。
  2. 选择「固定宽度」,点击「下一步」。
  3. 在数据预览区域,用鼠标点击标尺位置添加分列线:
    • 在第6个字符后点击,拆出地区码。
    • 在第14个字符后点击,拆出出生日期。
    • 剩下的就是顺序码。
  4. 拖动分列线可以微调位置,双击分列线可删除。
  5. 点击「下一步」,设置各列格式(日期列选日期格式)。
  6. 点击「完成」。

1.3 方法三:快捷键Ctrl+E智能填充——最简单但也最脆弱

WPS 2019 及以上版本支持智能填充(类似Office的快速填充Flash Fill),通过 Ctrl+E 一键触发。

使用方式

  1. 在数据列旁边第一个空白单元格中,手动输入第一个期望的拆分结果。例如A列是"张三-研发部",在B1手动输入"张三"。
  2. 将光标定位在B2单元格,按 Ctrl+E
  3. WPS 会自动识别你从A列提取的模式,将整列的姓名全部拆出来。
  4. 同理在C列拆分部门。

优点:零操作门槛,直观快速。

局限性

  • 对数据规律性要求高,遇到异常数据(如中间有特殊符号)容易识别失败。
  • 结果不随源数据更新而自动更新。源数据变了,必须重新 Ctrl+E
  • 不适合需要长期维护的数据处理流程。

适用场景:一次性、有规律、数据量不大的快速拆分。


二、函数分列:灵活度最高的进阶方案

2.1 用 TEXTSPLIT 函数(WPS 2023+)

如果你的 WPS 版本较新(2023及以上),TEXTSPLIT 是最简洁的分列函数。

语法=TEXTSPLIT(文本, 列分隔符, 行分隔符)

示例:A1 为"张三,男,1988,研发部"

=TEXTSPLIT(A1, ",")

结果:自动溢出为四个横向单元格:张三 | 男 | 1988 | 研发部。

2.2 组合拳:FIND + LEFT + MID + RIGHT

对于低版本 WPS 或不支持新函数的场景,经典组合拳永远可靠。

提取第一段(LEFT + FIND)

提取逗号前的内容(姓名):

=LEFT(A1, FIND(",", A1) - 1)

逻辑:找到第一个逗号的位置,取它左边的内容。

提取中间段(MID + FIND)

提取第二个逗号和第三个逗号之间的内容:

=MID(A1, FIND(",", A1) + 1, FIND(",", A1, FIND(",", A1) + 1) - FIND(",", A1) - 1)

公式较长但逻辑清晰:计算起点和长度,用MID提取。这就是嵌套FIND定位多个分隔符的典型案例。

提取最后一段(RIGHT + 反向查找)

提取最后一个逗号后的内容:

=RIGHT(A1, LEN(A1) - FIND("@", SUBSTITUTE(A1, ",", "@", LEN(A1) - LEN(SUBSTITUTE(A1, ",", "")))))

原理:用SUBSTITUTE计算逗号总数,将最后一个逗号替换为@后用FIND定位,再用RIGHT提取。

如果函数组合让你感到头疼,不用强求——分列向导在绝大多数场景下已经足够好用。函数分列的真正价值在于:当你需要自动化、可重复、随源数据联动更新时,它是唯一的选择。


三、数据合并四法:从分散到聚合

3.1 方法一:& 连接符——最基础最直观

& 是 WPS 表格中最简单的文本连接运算符。

示例

ABC
张三研发部高级工程师
=A1 & ",就职于" & B1 & ",职位为" & C1

结果:张三,就职于研发部,职位为高级工程师

要点

  • 文字常量需用英文双引号包裹。
  • 数字、日期会自动转为文本。
  • 换行符用 CHAR(10) 表示,如 =A1 & CHAR(10) & B1,会显示为两行。

3.2 方法二:CONCATENATE 函数——传统经典

=CONCATENATE(A1, "-", B1, "-", C1)

结果:张三-研发部-高级工程师

 & 功能完全一致,仅为书写风格差异。多参数时 & 更简洁,参数动态时两者等效。

3.3 方法三:TEXTJOIN 函数——多单元格合并的王牌(强烈推荐)

如果你的 WPS 版本支持 TEXTJOIN(2019及以上),这是合并操作的最优解。

语法=TEXTJOIN(分隔符, 是否忽略空值, 文本1, 文本2, ...)

三大经典场景

场景一:合并整行,用顿号分隔

=TEXTJOIN("、", TRUE, A1:G1)

结果:张三、男、1988、研发部、高级工程师、2015-03-01、北京

场景二:合并区域,忽略空单元格

=TEXTJOIN(";", TRUE, A1:A100)

第二个参数 TRUE 表示跳过空值,这样不会出现"张三;;李四"的尴尬。

场景三:多列合并为邮件列表

=TEXTJOIN(";", TRUE, A1:A50)

一键生成50人的分号分隔邮件列表,直接复制到邮件收件人栏。

TEXTJOIN 的碾压性优势

  • 一个分隔符统治全局,不用每个单元格后面手动加符号。
  • 自动跳过空值,告别"王五, , , 2018"这种多余逗号。
  • 支持区域引用,不用逐一选择单元格。

3.4 方法四:CONCAT 函数——TEXTJOIN的轻量版

=CONCAT(A1:G1)

直接将A1到G1的内容拼在一起,无分隔符。适合身份证号前6位+出生日期+后4位的无间隔合并,或生成连续编号等不需要分隔符的场景。


四、实战场景集:工作中一定用得上

场景一:拆分"省-市-区"地址

原始数据:A列 = "北京市-朝阳区-望京街道"

分列方案:分列向导→分隔符号→勾选「其他」→输入 - →下一步→完成。

一键拆出省、市、区三列。如果地址中存在多个"-",分列向导会把所有段都拆出来,删除多余列即可。

场景二:从身份证号提取出生日期

原始数据:A列 = 18位身份证号(如110101199003071234)

方案一(固定宽度):分列→固定宽度→在第6位和第14位处添加分列线→中间列为出生日期→格式选"日期:YMD"。

方案二(MID函数)

=DATE(MID(A1, 7, 4), MID(A1, 11, 2), MID(A1, 13, 2))

提取第710位为年,第1112位为月,第13~14位为日,用DATE函数拼成真正的日期值(可参与计算和排序)。

场景三:姓名和工号合并为统一标识

原始数据:A列=张三,B列=EMP0188

需求:生成"张三(EMP0188)"格式。

方案

=A1 & "(" & B1 & ")"

场景四:拆分含有多分隔符的混乱数据

原始数据:A1 = "北京 | 海淀;产品部, 张三"

这种同时含"|"";"", "三种分隔符的混乱数据,直接用分列向导会出问题——一次只能处理一种分隔符。

方案:用SUBSTITUTE函数先统一分隔符:

=TEXTSPLIT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, "|", ","), ";", ","), ",", ","), ",")

把所有乱七八糟的分隔符都替换为逗号,再用TEXTSPLIT一次性拆开。

场景五:各部门人员名单快速汇总

原始数据:A列=部门,B列=姓名。每个部门有多人。

需求:将每个部门的人员汇总到一个单元格中,用"、"分隔。

方案:使用 TEXTJOIN + IF 数组公式(或用WPS的「数据」→「分类汇总」配合TEXTJOIN手动操作)。对于小数据量,在排序后直接选中同一部门的姓名区域,用 =TEXTJOIN("、", TRUE, 选中区域) 即可。

场景六:拆分"姓名+手机号"合并列

原始数据:A1 = "张三13812345678"

这种连在一起的混合数据,没有分隔符,但有一个规律:中文姓名后紧跟数字。

方案(用函数分离):

提取姓名:

=LEFT(A1, LENB(A1) - LEN(A1))

原理:中文每个字符在LENB中计为2,在LEN中计为1。两者之差就是中文字符数(前提是不含全角符号干扰)。

提取手机号:

=RIGHT(A1, LEN(A1) * 2 - LENB(A1))

用总字符数减去中文字符数,得到数字字符数。


五、分列与合并的避坑指南

5.1 分列前务必备份

分列操作会直接覆盖或修改原始数据。强烈建议在分列前:

  • 复制原始列到新的位置操作。
  • 或者先保存一份副本文件。

一旦分列出错且没备份,丢失的数据可能需要从系统重新导出。

5.2 警惕长数字被篡改

身份证号、银行卡号、订单号等长数字(超过15位),在分列时必须将列格式设为「文本」。否则:

  • 15位以上数字会被科学计数法显示(如1.10101E+17)。
  • 第16位及之后的数字全部变成0。

这是Excel/WPS表格精度的固有限制(15位有效数字),不是操作错误,但结果一样致命。

5.3 合并后的数据无法再用于计算

=A1 & B1 生成的是文本,不是数字。如果你用 & 把销售额和单位合并成了"1200万元",这个单元格就不能再参与求和等数值运算了。

原则:原始数值保留在独立列中,合并后的文本仅用于展示,不替代原始数据。

5.4 分隔符选择要唯一

用分列向导拆分时,确保选择的分隔符在数据内部不会出现。例如,用逗号拆分地址"北京市朝阳区,望京街道,3号楼"是安全的,但拆分"请注意,该数据已更新,请查验"就会拆出四段而非三段。


六、方法选择决策树

面对一道分列或合并题,如何快速选择正确的方法?按以下路径判断:

分列需求
├─ 有明显统一分隔符?
│ └─ 是 → 【分列向导·分隔符号】 首选
├─ 位置固定无分隔符?
│ └─ 是 → 【分列向导·固定宽度】 首选
├─ 需要随源数据自动更新?
│ └─ 是 → 【TEXTSPLIT 函数 / FIND组合拳】
└─ 一次性快速提取?
 └─ 是 → 【Ctrl+E 智能填充】

合并需求
├─ 多个单元格合并,需指定分隔符?
│ └─ 是 → 【TEXTJOIN】 首选
├─ 简单拼接(≤3个单元格)?
│ └─ 是 → 【& 连接符】 最快
├─ 无分隔符拼接?
│ └─ 是 → 【CONCAT】
└─ 拼接常量文字居多?
 └─ 是 → 【& 或 CONCATENATE】

七、总结

分列与合并是 WPS 表格数据清洗中使用频率最高的操作。它们并不复杂,但方法众多,知道"什么时候用哪个"才是效率的分水岭。

四个核心建议:

  1. 分列优先用分列向导——90%的场景,点三下鼠标就搞定。不必一上来就写函数。
  2. 合并优先用 TEXTJOIN——一个函数解决分隔符、空值、区域引用三大痛点。
  3. 长数字必须保护——分列时强制设为文本格式,一分心就毁全局。
  4. 原始数据永不覆写——操作前备份,合并结果保留在展示列,原始数据列不删。

掌握了这些方法,你面对任何"黏在一起"或"散落各处"的数据,都有对应的武器库。数据清洗不再是体力活,而是几分钟的智力解题。




本文相关标签

没有相关标签