You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TEXTJOIN公式中添加UNIQUE和SORT实现去重排序?

解决Excel公式去重并保持原顺序的问题

问题分析

当前公式能通过SEARCH匹配包含目标国家代码的单元格,提取对应的CW行内容,但存在两个问题:结果有重复项,且无法保持$Q$30:$X$30的原有排列顺序。直接嵌套SORT会打乱原顺序,而UNIQUE未结合过滤逻辑的话,会保留空值或无效项。

解决方案(适用于Excel 365/2021及以上版本)

使用FILTER先筛选出符合条件的项,再用UNIQUE去重(默认保留首次出现的顺序,即原$Q$30:$X$30的顺序),最后用TEXTJOIN拼接:

=TEXTJOIN(";",TRUE,UNIQUE(FILTER($Q$30:$X$30,ISNUMBER(SEARCH(M22,$Q$31:$X$35)),"")))

公式拆解

  • FILTER($Q$30:$X$30,ISNUMBER(SEARCH(M22,$Q$31:$X$35)),""):从$Q$30:$X$30中筛选出对应$Q$31:$X$35单元格包含M22内容的项,空值直接过滤
  • UNIQUE(...):对筛选结果去重,严格保留原顺序(只保留每个值第一次出现的位置)
  • TEXTJOIN(";",TRUE,...):将去重后的结果用分号拼接成字符串

旧版Excel兼容方案(无动态数组支持)

如果你的Excel版本不支持FILTER和UNIQUE,可以使用以下数组公式(输入后按Ctrl+Shift+Enter确认):

=TEXTJOIN(";",TRUE,INDEX($Q$30:$X$30,SMALL(IF(MATCH($Q$30:$X$30&IF(ISNUMBER(SEARCH(M22,$Q$31:$X$35)),$Q$30:$X$30,""),$Q$30:$X$30&IF(ISNUMBER(SEARCH(M22,$Q$31:$X$35)),$Q$30:$X$30,""),0)=COLUMN($Q$30:$X$30)-COLUMN($Q$30)+1,COLUMN($Q$30:$X$30)-COLUMN($Q$30)+1,""),ROW($Q$30:$X$30)-COLUMN($Q$30)+1)))

该公式通过MATCH标记首次出现的符合条件项,再用INDEX提取并拼接,实现去重+保序效果。

内容的提问来源于stack exchange,提问作者Lixxy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:36:16