【问题标题】:Remove delimited duplicate values from within an Excel cell从 Excel 单元格中删除分隔的重复值
【发布时间】: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


【解决方案1】:

以下公式可以在一些有限的条件下工作:

-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),""))

【讨论】:

    【解决方案2】:

    如果您有 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 将它们重新组合在一起。

    【讨论】:

      【解决方案3】:

      另一个 Office 365 或 Excel 2019 公式解决方案

      在B1中,数组(CSE)公式向下复制:

      =TEXTJOIN(";",1,IF(ISNUMBER(FIND(";"&ROW(A$1:A$9999)&";",";"&A1&";")),ROW(A$1:A$9999),""))
      

      【讨论】:

      • 这是否也适用于文本或仅适用于数字?我没有意识到我也有一些文本字符串,意思是 3;5;K;例如或 8;9;T
      • 简答,不。
      猜你喜欢
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2015-03-11
      • 2014-02-27
      • 2014-11-11
      • 2018-03-10
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多