【发布时间】:2012-07-31 10:34:23
【问题描述】:
我一直在努力解决的快速问题。我有 2 个包含字符串的不同长度的数组。 我想输出一个新数组,如果检测到重复,则删除两个元素。目前,它只删除重复项,但留下不正确的原始文件。
例如
input = array ("cat","dog","mouse","cat")
expected output = array ("dog","mouse")
actual output = array ("cat","dog","mouse")
代码如下:
Sub removeDuplicates(CombinedArray)
Dim myCol As Collection
Dim idx As Long
Set myCol = New Collection
On Error Resume Next
For idx = LBound(CombinedArray) To UBound(CombinedArray)
myCol.Add 0, CStr(CombinedArray(idx))
If Err Then
CombinedArray(idx) = Empty
dups = dups + 1
Err.Clear
ElseIf dups Then
CombinedArray(idx - dups) = CombinedArray(idx)
CombinedArray(idx) = Empty
End If
Next
For idx = LBound(CombinedArray) To UBound(CombinedArray)
Debug.Print CombinedArray(idx)
Next
removeBlanks (CombinedArray)
End Sub
提前感谢所有帮助和支持。
【问题讨论】:
-
使用冒泡排序对数组进行排序,然后删除重复项:)
-
嗨 Siddharth,冒泡排序算法不是针对数值的吗?
-
不,没有必要:) 您可以对任何类型的数组进行冒泡排序。
-
事实上还有一种不用排序的方法,那就是使用唯一的集合。
-
再次感谢 Siddhart 的反馈,唯一的收藏是否只会删除重复项?如果检测到重复,我需要它来删除原始和重复。
标签: windows arrays excel vba unique