私はhttp://www.homeandlearn.org/arrays_and_loops.htmlを使ってこれを手伝ってくれました。Visual Basic、VBA配列ループ
1つのテーブルにフィルタリングするデータ接続があります。残念ながら、ソースの1つは、プログラムがExcelにファイルをエクスポートするときに間違ったデータ(通常は日付)を間違った列(Client列)にランダムに配置します。私がしたいのは、インデックス/マッチ機能に似たものです。私はこのマスターテーブル(A)の各予約番号を同じブック内の別のテーブル(B)と照合したいと思います。他のシート(B)からの予約番号がマスターテーブル(A)の予約番号と一致する場合は、マスターテーブル(A)に正しいクライアント値を入力したいと思います。私はまだかなりVBAに新しいので、どんな助けもありがとうございます。私はここで、私のコードを変更しようとしたが役に立たない。また、私はもともと本物のデータなしでこれを練習として実行していたので、元のファイルを台無しにしませんでした。他のシートやその他のものを参照するための適切な構文を追加しようとしたため、間違って入力することもできます。私が思いついた最も近い元のコードは次のとおりです。
Sub TransferData()
Dim MyArray(1 To 19) As Single
MyArray(1) = 81899
MyArray(2) = 87172
MyArray(3) = 87275
MyArray(4) = 87394
MyArray(5) = 87446
MyArray(6) = 87496
MyArray(7) = 87621
MyArray(8) = 87631
MyArray(9) = 87726
MyArray(10) = 87822
MyArray(11) = 87858
MyArray(12) = 88041
MyArray(13) = 88097
MyArray(14) = 88127
MyArray(15) = 88160
MyArray(16) = 88191
MyArray(17) = 88359
MyArray(18) = 88487
MyArray(19) = 88545
For i = 1 To 19
If Worksheets("Sheet1").Range("B" & i).Value = MyArray(i) Then
Worksheets("Sheet2").Range("P" & i).Value = _
Worksheets("Sheet1").Range("E" & i).Value
End If
Next i
End Sub
コードは正確に上記と同じではなく、それに近いので、私はエラーを思い出しません。私はそれが実行されていた問題は、変数が19より上になったとき、システムは配列> 19を見つけることができなかったと信じています。現在、3k +になっている行の数が変わっても19個の配列をチェックする必要があります。変数を別にしておくと、別の変数を追加しようとしましたが、VBAですべての行に対して19個の配列をチェックできるようになりました。ここで私はコンパイルエラーを取得、このコードでは、私はそれのために思い付いたコード....
Sub TransferData()
Dim MyArray(1 To 19) As Single
MyArray(1) = 81899
MyArray(2) = 87172
MyArray(3) = 87275
MyArray(4) = 87394
MyArray(5) = 87446
MyArray(6) = 87496
MyArray(7) = 87621
MyArray(8) = 87631
MyArray(9) = 87726
MyArray(10) = 87822
MyArray(11) = 87858
MyArray(12) = 88041
MyArray(13) = 88097
MyArray(14) = 88127
MyArray(15) = 88160
MyArray(16) = 88191
MyArray(17) = 88359
MyArray(18) = 88487
MyArray(19) = 88545
For i = 1 To 5000
For j = 1 To 19
If Worksheets("Sheet1").Range("B" & i).Value = MyArray(j) Then
Worksheets("Sheet2").Range(i, 16).Value = Worksheets("Sheet1"). _
Range(i,5).Value
Next j
End If
Next i
End Sub
です:次の場合なし。オンラインで検索すると、2つの「For」、if文、if文内の「next」文、ループの外側の別の「next」文があるために見つかった可能性があります。私は、B列の各セルがすべての配列の可能性に対してチェックされるように、このようにしなければならないと考えていました。
下記の画像を参照してください。シートからの列K(TMRtoSPIde)の値がシート:RawDataの列D(請求金額)に入力される必要があります。シートには、RawDataに5桁のシリアル日付がBilling Name列に誤って表示されています。これらは私が取り組もうとしているものです。
。レンジ( "B2")。[値]次に 'のワークシート( "シート2")。レンジ( "P2")。値= ワークシート( "Sheet1")。Range( "E2")。Value'。 'Worksheets(" Sheet1 ")の予約番号として' Worksheets( "Sheet2")の同じ行を更新しているのは不思議です。 '私はあなたが' Worksheets( " Sheet2 ")'も同様です。 –
あなたは間違いなしです。私は少しここで描画ボードに戻るつもりです。これをキャッチするためにありがとう。 – Craig
'MyArray()'の目的は何ですか?これらのコードは、コードを使用するために制限したいアカウント番号のサブセットですか?あなたが使用したくない他の口座番号はありますか? –