如何在Excel中合并两个单元格的不重复数据(无需使用VBA)
在Excel中合并两个单元格数据并去除重复项(非VBA方法)
方法1:适用于Excel 365/2021(支持动态数组函数)
直接用TEXTSPLIT、UNIQUE和TEXTJOIN三个函数组合,一步到位:
=TEXTJOIN(",", TRUE, UNIQUE({TRIM(TEXTSPLIT(A1, ",")), TRIM(TEXTSPLIT(B1, ","))}))
TEXTSPLIT(A1, ","):把A1中的字符串按逗号拆分成独立的文本数组TRIM():去除每个文本项前后的空格(避免因空格导致的重复误判,比如"CC"和" CC"){...,...}:将A1和B1拆分后的数组合并成一个大数组UNIQUE():从合并后的数组中提取不重复的项TEXTJOIN(",", TRUE, ...):把去重后的数组用逗号连接成字符串,TRUE参数会自动忽略空值(比如单元格末尾多打了逗号的情况)
方法2:适用于旧版Excel(无动态数组函数)
如果你的Excel版本不支持动态数组,可使用以下数组公式(输入后需按Ctrl+Shift+Enter确认,而非单独按Enter):
=TEXTJOIN(",", TRUE, IF(ISERROR(MATCH(TRIM(MID(SUBSTITUTE(A1&","&B1, ",", REPT(" ", 99)), (ROW(INDIRECT("1:"&LEN(A1&","&B1)-LEN(SUBSTITUTE(A1&","&B1, ",", ""))+1))-1)*99+1, 99)), TRIM(MID(SUBSTITUTE(A1&","&B1, ",", REPT(" ", 99)), (ROW(INDIRECT("1:"&LEN(A1&","&B1)-LEN(SUBSTITUTE(A1&","&B1, ",", ""))+1))-1)*99+1, 99)), 0)), "", TRIM(MID(SUBSTITUTE(A1&","&B1, ",", REPT(" ", 99)), (ROW(INDIRECT("1:"&LEN(A1&","&B1)-LEN(SUBSTITUTE(A1&","&B1, ",", ""))+1))-1)*99+1, 99))))
公式原理:
A1&","&B1:先把两个单元格的内容合并成一个字符串SUBSTITUTE(..., ",", REPT(" ", 99)):把所有逗号替换成99个空格,方便按固定长度拆分MID(..., ..., 99):按位置拆分出每个文本项,再用TRIM()去除空格MATCH(...):检查当前项是否在之前的项中出现过,ISERROR()判断是否重复IF(...):保留不重复的项,过滤重复项TEXTJOIN():把最终的不重复项用逗号连接成字符串
注意事项
- 如果你的单元格内容使用的是其他分隔符(比如分号),只需把公式中的逗号分隔符替换成对应的符号即可
- 确保单元格中没有多余的换行或特殊字符,否则可能影响拆分和去重效果
内容的提问来源于stack exchange,提问作者Himesh Banerjee
相关产品推荐
相关产品推荐

