Excel 365:多列邮件名去重降序后用TEXTJOIN合并至单个单元格
解决TEXTJOIN合并唯一值并降序排序的问题
问题分析
你之前的公式未达预期,主要是两个原因:要么单元格存在隐形空格导致UNIQUE没识别出重复值,要么缺少排序步骤。以下是针对性解决方案:
适用于Excel 365/2021及以上版本(支持动态数组)
直接用嵌套函数一步完成去重、排序、合并:
=TEXTJOIN("; ",TRUE,SORT(UNIQUE(TRIM($A2:$J2)),,-1))
各部分作用:
TRIM($A2:$J2):清除每个单元格的前后空格,避免因空格导致UNIQUE误判为不同值UNIQUE(...):提取范围内的唯一值SORT(...,,-1):对唯一值进行降序排序(参数-1指定降序,改为1则是升序)TEXTJOIN("; ",TRUE,...):用分号加空格合并结果,TRUE参数自动忽略空单元格
适用于旧版Excel(不支持动态数组,如2019及更早)
使用数组公式实现,输入时按Ctrl+Shift+Enter确认:
=TEXTJOIN("; ",TRUE,SORT(INDEX($A2:$J2,N(IF(1,MATCH(TRIM($A2:$J2),TRIM($A2:$J2),0)=COLUMN($A2:$J2)-COLUMN($A2)+1))),,-1))
如果你的Excel版本连TEXTJOIN都不支持,只能借助自定义VBA函数实现,这种情况比较少见。
额外注意事项
- 如果单元格内容存在大小写差异(比如"北京"和"BEIJING"),
UNIQUE会视为不同值。若要忽略大小写统一去重,可先用UPPER或LOWER转换:
若要保留原文本大小写,需更复杂的嵌套逻辑,一般县区名称不会有这种情况,按需使用即可。=TEXTJOIN("; ",TRUE,SORT(UNIQUE(UPPER(TRIM($A2:$J2))),,-1))
内容的提问来源于stack exchange,提问作者user22294649
相关产品推荐
相关产品推荐

