我所擁有的是一列,我使用匹配函數來生成找到值的位置。因此該列中的每個單元格都有一個位置值。恩。 3,4,5,#N/A,7,8等。保存某些值爲「#N/A」的單元格。vba從循環中刪除集合
我的目標是用這些缺少的集合值生成一個集合。例如,根據上述示例,我的收藏將具有值「6」。我現在的方法是用所有可能的位置填充集合,然後遍歷列並根據列單元格的值移除。
Dim arrPos As New Collection
Dim bottomRow, matchRow As Long
bottomRow = Range("A" & Rows.Count).End(xlUp).Row
matchRow = Range("C" & Rows.Count).End(xlUp).Row
' fill collection
For i = 3 To bottomRow
arrPos.Add i
Next i
' remove selects
For h = 3 To matchRow
For g = 1 To arrPos.Count
If Range("C" & h).Value = arrPos(g) Then
arrPos.Remove (g)
End If
Next g
Next h
我的問題是,我似乎在循環中基於索引刪除時遇到問題。 If
聲明中出現Run-time error '9': Subscript out of range
錯誤。我猜這是因爲我在循環中刪除而索引不斷重新排序。那麼爲什麼問題是如何在循環中實現這些刪除,或者如果有更好的方法來實現我所嘗試的。
請注意,這些匹配結果並非完全按照升序或降序排列。所以它實際上看起來更像「5,8,4,3,7,#N/A等」。
這裏的問題似乎是,你行號作爲鍵添加值,但是當你刪除的項目,你是刪除他們的位置。行號從3開始,但集合中的位置從1開始,因此兩者之間明顯不匹配。我不確定甚至可以將整數值作爲集合中的鍵,因爲默認的Item方法似乎將這些值視爲位置而不是鍵 – barrowc 2013-03-07 22:53:54