You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何过滤单元格中的重复字符串?能否应用FILTER函数实现?

单个单元格内容去重:用FILTER及其他可行方案

当然可以用FILTER来实现单个单元格内的重复字符串移除需求!不过得先把单元格里的逗号分隔文本转换成可处理的数组,再配合函数完成去重。之前你用UNIQUE+TEXTJOIN没成功,大概率是拆分时的分隔符没匹配对,或者数组生成有问题。下面给你详细的解决方案:

方案1:修正后的UNIQUE+TEXTJOIN(最简单高效)

先解决你之前的问题——如果你的目标单元格是A1,内容是Tomato, Potato, Beef, Tomato, Salmon, Beef(逗号后带空格),正确的公式应该是:

=TEXTJOIN(", ", TRUE, UNIQUE(TEXTSPLIT(A1, ", ")))

拆解一下:

  • TEXTSPLIT(A1, ", "):把A1的内容按, (逗号加空格)拆分,生成一个包含所有元素的数组
  • UNIQUE():对这个数组去重,自动保留每个元素的首次出现
  • TEXTJOIN(", ", TRUE, ...):把去重后的数组重新用, 拼接成连贯文本
    如果你的单元格里是纯逗号分隔(没有空格),只要把公式里的", "换成","就行。

方案2:用FILTER实现去重(满足你的需求)

如果你确实想用FILTER来完成,我们可以结合MATCH和SEQUENCE来定位首次出现的元素,筛选出唯一值:

=LET(
    arr, TEXTSPLIT(A1, ", "),
    first_occur, MATCH(arr, arr, 0),
    unique_items, FILTER(arr, first_occur = SEQUENCE(ROWS(arr))),
    TEXTJOIN(", ", TRUE, unique_items)
)

解释一下:

  • LET():给中间变量命名,让公式更简洁易读,避免重复拆分单元格内容
  • arr:存储拆分后的所有元素数组
  • first_occur:记录每个元素在数组中首次出现的位置
  • FILTER(arr, first_occur = SEQUENCE(ROWS(arr))):筛选出那些首次出现位置等于自身序号的元素(也就是只保留第一次出现的元素)
  • 最后用TEXTJOIN把筛选后的唯一元素拼接成最终文本

版本兼容提醒

以上公式适用于Excel 365/2021及以后版本,因为用到了TEXTSPLIT、LET这些新函数。如果是旧版Excel,得用MID+ROW的组合来手动拆分文本,再配合去重逻辑,不过操作会麻烦很多,建议尽量升级到新版。

内容的提问来源于stack exchange,提问作者Artur Müller Romanov

火山引擎 最新活动