私が持っているのは、見つかった値の位置を生成するために一致関数を使用した列です。したがって、その列の各セルには位置の値があります。元。3、4、5、#N / A、7、8など。値が「#N/A」のセルをいくつか保存します。
私の目標は、これらの欠落しているコレクション値を使用してコレクションを生成することです。たとえば、上記の例に基づくと、私のコレクションの値は「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
私の問題は、ループ中にインデックスに基づいて削除するのに問題があるように見えることです。ステートメントでRun-time error '9': Subscript out of range
エラーが発生します。If
これは、ループ中に削除していて、インデックスが並べ替えられ続けているためだと思います。それで、なぜ問題はループ中にこれらの除去を達成する方法であるか、または私が試みていることを達成するためのより良い方法があるかどうかです。
これらの試合結果は完全に昇順または降順ではないことに注意してください。したがって、実際には「5、8、4、3、7、#N/Aなど」のようになります。