如何在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
相关产品推荐
相关产品推荐

