我需要帮助从单元格中的逗号分隔列表中提取重复项。
我可以走很长的路,但如果可能的话,我需要一条捷径。
这里有两个例子:
例如,
A1: 1,4,4,6,10,58
Result in B1: 4,4
A2: 5,5,10,55,70,70,76
Result in B2: 5,5,70,70
谢谢你的帮助。*我有 Excel 2016。
最佳答案
试试,如果有 TEXTJOIN
(可从 Excel 2019 获得):
=TEXTJOIN(",",,FILTERXML("<t><s>"&SUBSTITUTE(A1,",","</s><s>")&"</s></t>","//s[preceding::*=. or following::*=.]"))
在 Excel 2016 中,您可以创建自己的 UDF:
Function Dupes(str As String) As String
With Application
Dupes = Join(.Transpose(.FilterXML("<t><s>" & Replace(str, ",", "</s><s>") & "</s></t>", "//s[preceding::*=. or following::*=.]")), ",")
End With
End Function
如您所见,只要您得到 FILTERXML
,语法就保持不变。 (可从 Excel 2013 获得)。通过你提到的评论,你不需要知道重复两次。一次就足够了,因此您可以更改
XPATH
语法有点:=FILTERXML("<t><s>"&SUBSTITUTE(A1,",","</s><s>")&"</s></t>","//s[preceding::*=. ][not(following::*=.)]")
您可以在 UDF 中执行相同的操作。如果这激发了您的兴趣,那么您可能会喜欢 this在 SO 上发布更多关于如何使用 FILTERXML
的想法重做分隔的字符串。
关于excel - 从单元格中的列表中提取重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63101204/