【发布时间】:2020-12-22 15:14:44
【问题描述】:
我想弄清楚如何从 Excel 单元格中删除重复值。我的列的值用分号分隔。例如,在 A 列中,这 3 行具有以下值。
3;5;6
2;2;4
9;5;12;12
我想要在相邻列中执行的操作,称为 B 列,有一个返回的公式:
3;5;6
2;4
9;5;12
我需要使用什么公式或函数来实现这一点?
【问题讨论】:
标签: excel vba excel-formula excel-2010
我想弄清楚如何从 Excel 单元格中删除重复值。我的列的值用分号分隔。例如,在 A 列中,这 3 行具有以下值。
3;5;6
2;2;4
9;5;12;12
我想要在相邻列中执行的操作,称为 B 列,有一个返回的公式:
3;5;6
2;4
9;5;12
我需要使用什么公式或函数来实现这一点?
【问题讨论】:
标签: excel vba excel-formula excel-2010
以下公式可以在一些有限的条件下工作:
-using >= excel2019 version.
-all numbers in the strings > 0.
-all numbers in the string are integer.
-the maximum number in the string = 10^6
您可以更改$1:$10 或$1:$100,..
C2=TEXTJOIN(";",,IF(1=FREQUENCY(IFERROR(MATCH(ROW($1:$10),--TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW(INDIRECT("A1:A" & 1+ LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))-1)*LEN(B2)+1,LEN(B2))),0),1000),IFERROR(MATCH(ROW($1:$10),--TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW(INDIRECT("A1:A" & 1+ LEN(B2)-LEN(SUBSTITUTE(B2,",",""))))-1)*LEN(B2)+1,LEN(B2))),0),1000)),ROW($1:$10),""))
【讨论】:
如果您有 Office 365,那么您可以尝试以下公式,看看它是否可以帮助您满足您的要求。
=TEXTJOIN(";",TRUE,(UNIQUE(FILTERXML("<t><d>"&SUBSTITUTE(A2,";","</d><d>")&"</d></t>","//d"))))
对于FILTERXML 部分,我建议通过stackoverflow 上的以下链接,它从基本字符串创建单个元素的数组:
Excel - Extract substring(s) from string using FILTERXML
结构的其余部分是相当标准的,它使用UNIQUE 获取唯一项目列表,然后我们使用TEXTJOIN 将它们重新组合在一起。
【讨论】: