首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从excel中的单元格中删除重复项

从excel中的单元格中删除重复项
EN

Stack Overflow用户
提问于 2015-01-13 15:18:24
回答 1查看 2.1K关注 0票数 5

所以我得到了一个字符串列表,其中一些字符串包含重复的字符串。

例如:

13-六碳六烯酸;13-甲基-4-五碳烯酸;14-甲基-6-五碳烯酸;15-六碳内酯;3-六碳六烯酸;4-十六碳烯酸;13-六碳六烯酸;13-甲基-4-五碳烯酸;14-甲基-6-十五烯酸;15-六碳内酯;3-六碳烯酸;4-六烯酸;

所以我在网上看到了一个宏,并调整它来解决我的问题,它是这样的:

代码语言:javascript
运行
复制
Function stringOfUniques(inputString As String) As String
    Dim inArray() As String
    Dim xVal As Variant
    inArray = Split(inputString, ";")
    For Each xVal In inArray
        If InStr(stringOfUniques, Trim(xVal)) = 0 Then _
        stringOfUniques = stringOfUniques & Trim(xVal) & ","
    Next xVal

End Function

对于我的一些字符串,这是非常出色的,但是对于上面的例子,它将返回字符串,删除重复的字符串,但奇怪的是,它将去掉两个单词‘3-六碳六烯酸’的副本。所以基本上

我应该得到的是:

13-六烯酸;13-甲基-4-五碳烯酸;14-甲基-6-五碳烯酸;15-六碳内酯;3-六碳烯酸;4-十六碳烯酸;

我真正得到的是:

13-六烯酸;13-甲基-4-五碳烯酸;14-甲基-6-五碳烯酸;15-六碳内酯;4-十六碳烯酸;

我的代码中有什么东西会导致这种情况发生吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-13 15:34:58

可能有几种方法可以做到这一点,但是Dictionary对象对于执行唯一性非常好。

代码语言:javascript
运行
复制
Function stringOfUniques(inputString As String, delimiter as String)
Dim xVal As Variant
Dim dict as Object
Set dict = CreateObject("Scripting.Dictionary")

For Each xVal In Split(inputString, delimiter)
    dict(xVal) = xVal
Next xVal

stringOfUniques = Join(dict.Keys(),",")
End Function

该函数还被修改为接受变量分隔符参数,因此您将把输入字符串和分隔符:";"传递给函数,函数将返回一个逗号分隔的字符串。

--关于词典的注释:

字典存储密钥/值对。钥匙一定是独一无二的。

在本例中,我对字典对象使用了一个简单的赋值:dict(key) = key。字典在被其键引用时会自动添加或覆盖项,因此这是执行唯一性的一种非常简单的方法。

在其他情况下(例如,您希望计数每个键的出现次数),您需要使用dict.Exists(key)进行测试,以便在不覆盖键/值对的情况下修改value

代码语言:javascript
运行
复制
'Assigns a "count" value to the dictionary for each unique Key
For Each xVal In Split(inputString, delimiter)
    If dict.Exists(xVal) Then
        dict(xVal) = dict(xVal) + 1
    Else
        dict(xVal) = 1
    End If
Next xVal

'Read the "count" from each key:
For Each xVal in dict.Keys()
    MsgBox xVal & " appears " & dict(xVal) & " times"
Next
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27925416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档