excel - 从单元格中的列表中提取重复项
问题描述
我需要帮助从单元格中的逗号分隔列表中提取重复项。我可以走很长的路,但如果可能的话,我需要一条捷径。
这里有两个例子:
例如,
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 中执行相同的操作。如果这激发了您的兴趣,那么您可能会喜欢SO 上的这篇文章,以获取有关如何使用FILTERXML
重做分隔字符串的更多想法。
推荐阅读
- angular - Google Admob 不显示
- kubernetes - Kubernetes 集群 IP 服务如何选择端点?
- tar - 无法解压 xx.tar.zst 文件并出现错误“zstd: /*stdin*\: unsupported format”
- javascript - Angular如何防止子模板在父模板中滚动
- javascript - create submenu 用 JS 创建所有 LI,并使用 mouseover 和 mouseleave 将其删除
- html - 如何在第一页的 iframe 上仅显示另一个 html 页面的选定文本
- c# - 如何在 WPF 中用户控件的菜单项和子菜单项之间正确导航?
- python - 找到一组对的最大总重量
- python-3.x - TypeError:“Word2Vec”对象不可下标
- ssh - 试图获取 kubernetes 节点的 ssh