Excel提取多分隔符单元格内指定文本并生成去重列表的方法
Excel提取指定文本并去重合并解决方案
针对Excel 365/2021及以上(动态数组版本)
直接使用以下公式即可完成提取、去重、合并的全流程:
=TEXTJOIN(", ", TRUE, UNIQUE(TEXTAFTER(TEXTSPLIT(A1, "|"), ", ", -1)))
公式拆解:
TEXTSPLIT(A1, "|"):将目标单元格内容按|分割为独立的文本片段,自动适配任意数量的分隔符。TEXTAFTER(..., ", ", -1):对每个分割后的片段,提取最后一个,(逗号加空格)之后的内容,这正是你需要的「|分隔符与其前一个逗号之间的文本」,参数-1表示从文本末尾反向匹配第一个,。UNIQUE(...):对所有提取出的文本进行去重,自动剔除重复值。TEXTJOIN(", ", TRUE, ...):将去重后的结果用,连接为一个紧凑的列表,TRUE参数会自动忽略可能出现的空值。
针对旧版Excel(无动态数组支持,如2019及更早)
使用数组公式兼容旧版本,输入公式后需按Ctrl+Shift+Enter确认(而非单独按Enter):
=TEXTJOIN(", ", TRUE, UNIQUE(IFERROR(TEXTAFTER(INDEX(TEXTSPLIT(A1, "|"), ,ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"|",""))+1))), ", ", -1), "")))
兼容版补充说明:
LEN(A1)-LEN(SUBSTITUTE(A1,"|",""))+1:计算单元格内|的数量,从而确定分割后的片段总数。ROW(INDIRECT(...)):生成对应数量的行号序列,配合INDEX逐个提取分割后的片段,模拟动态数组的遍历效果。IFERROR(...):防止因片段格式异常导致的公式错误,空值会被自动过滤。
示例验证
假设A1单元格内容为:Xxx, yyy, zzz, Need this|AAA, BBB, CCC, And this|Xxx, BBB, CCC, This too...|Xxx, yyy, zzz, Need this
公式输出结果为:Need this, And this, This too...
内容的提问来源于stack exchange,提问作者Lucy
相关产品推荐
相关产品推荐

