2012-03-06 73 views
1

我想从Excel数组中删除重复的元素。我想我不是最有效的方式这样做,它似乎并没有被工作反正:excel vba - 删除数组中的重复项

For lrw = 1 To UBound(rcArray) 
    For copyIndex = lrw + 1 To .Rows.Count 
     If rcArray(copyIndex) = rcArray(lrw) Then 
      rcArray(lrw).Delete 
     End If 
    Next copyIndex 
Next lrw 

我需要REDIM数组?有没有人有链接到这个一些代码?

在此先感谢!

+0

什么是rcArray声明为?如果它被声明为一个数组,那么这个'rcArray(lrw).Delete'将不起作用并且会抛出一个错误。 – 2012-03-07 06:05:50

+0

您可以将其转储到一个范围,使用Excel的内置功能提取唯一记录,然后将记录转储回第二个数组。同样的方法可以用于数据排序而不是对数组进行冒泡排序。 – brettdj 2012-03-07 09:20:03

回答

0

虽然它需要我花些时间来修补一些代码,但最好的办法是创建一个新的数组并复制你想要保留的值。你不能只删除数组中间的元素。

Redim只允许您添加或移除数组末尾的元素。

+0

所以如果它通过一个值,我把它复制到一个新的数组?我觉得有道理。在复制任何值之前,是否需要设置数组的边界? – thebiglebowski11 2012-03-06 21:53:08

+0

是的,你把它复制到新的数组中 - 你将需要有一个单独的索引),并且是将边界设置为与初始数组相同。然后,当你完成后,你可以使用redim截断它(跟踪你复制了多少项目) – 2012-03-06 22:08:00