2016-09-28 4 views
0

大きな配列内の10個の要素をループし、別の配列との不一致がないかどうかを確認します(array2としましょう)。一度に配列内の複数の要素をループする方法

Dim j As Long, i As Long, arr As Variant 

mismatch = Compare_array(array1, array2) 'Compare_array is a function and returns an array of mismatches 

For i =LBound(mismatch) to UBound(mismatch) 
    j=0 
    For arr = mismatch(j + 1, 1) To mismatch(j + 10, 1) 
     'other code' 
    Next 
Next 

は基本的に私が何をしたいのミスマッチ配列の10個の要素を取得し、それを他の手順を実行しています。他の手順が完了した後、私は不一致配列の次の10要素を取るなどします。私は2番目のステートメントを正しく実行したかどうかは分かりません。

アドバイスをいただければ幸いです。

答えて

2

私が正しく質問を理解していれば、あなたがする必要がある必要があり、すべてが10秒で配列を通してステップで、その後、内側のループは、メインインデックスオフセットしている:あなたは要件を持っていない場合

For i = LBound(mismatch) To UBound(mismatch) - 10 Step 10 
    For j = 0 To 9 
     arr = mismatch(i + j) 
     'other code' 
    Next 
Next 

をサブグループが正確に10個の要素を持っていることを、あなたは残されている要素またはしかし多くの最大をループすることにより、内部ループに別々のバウンドの計算を追加することができます。

For i = LBound(mismatch) To UBound(mismatch) Step 10 
    Dim innerBound As Long 

    If i + 10 > UBound(mismatch) Then 
     innerBound = UBound(mismatch) - i 
    Else 
     innerBound = 9 
    End If 
    For j = 0 To innerBound 
     arr = mismatch(i + j) 
     'other code 
    Next 
Next 
+0

はありがとうございます。私はこのコードが10個の要素すべてをとっており、不一致配列の10番目の要素すべてではないと仮定します。 ' - 10'は最初の行で何をしますか? また、10で割り切れない不一致要素を10で割り切れる要素と同じにしたい場合はどうすればよいですか? – user112947

+0

@ user112947 - はい、10日ごとではなく、各要素をトラバースします。 -10では、内側のループが配列の境界を超えて実行されないようにします。これは、内側のループがオフセットを追加しているためです。追加の 'x'要素で均等に割り切れない場合の処理​​は、使用要件によって決まります。 – Comintern

+0

これは、余分なx要素が「他のコード」の下に置かれたのと同じコードを均等に割り切れない場合に置くことができますか? – user112947

関連する問題