【发布时间】:2015-03-11 14:27:09
【问题描述】:
所以我有一个字符串列表,其中一些字符串包含重复项。
例如:
13-十六碳烯酸;13-甲基-4-十五碳烯酸 酸;14-甲基-6-十五碳烯酸;15-十六内酯;3-十六碳烯酸 酸;4-十六碳烯酸;13-十六碳烯酸 酸;13-甲基-4-十五碳烯酸;14-甲基-6-十五碳烯酸 酸;15-十六内酯;3-十六碳烯酸;4-十六碳烯酸;
所以我在网上遇到了一个宏,并对其进行了调整以解决我的问题,如下所示:
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-十六碳烯酸 酸;
我的代码中是否存在导致这种情况发生的原因?
【问题讨论】:
-
为这个例子道歉,可能不是最容易看到的
-
我猜它与
InStr有关 -> 返回一个整数,指定一个字符串在另一个字符串中第一次出现的起始位置。 所以它可能会将13-Hexadecenoic acid视为3-Hexadecenoic acid的副本因此即使在删除第一个3-Hexadecenoic acid之后它仍然会找到13-Hexadecenoic acid并删除第二个 -
感谢您的帮助!
标签: string vba excel duplicates