2012-03-06 98 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