0

別のワークブックからデータを取得して適切な場所に貼り付けるコードを VBA で記述しようとしています。例えば:

1 つのワークブックで:

123 x  
321 xx  
159 xxx  
235 xxxx

x 列をコピーして適切な場所に配置すると、次のようになります。

235    xxxx
321    xx
123    x
159    xxx

私はすでにデータを取得することができましたが、問題は正しいセルに入れようとしたときです。ブロック内のIfステートメントがFor...Next正しく機能しません。これが私のコードです:

Sub copyToWorkbook()
    Dim arr(32) As String
    Dim rr(32) As String
    Dim temp(32) As String

For k = 1 To 32
    temp(k) = Cells(k, 1).Value
Next
With ActiveSheet
        .Range("B200:B300").FormulaArray = "='" & "g:" & "\[" & "PPM_et_top_fournisseur.xls" & "]" _
                    & "PPM officiels" & "'!" & "B12:B43"
End With
Dim q As Integer
For f = 1 To 32
    q = 199 + f
    arr(f) = Cells(q, 2).Value
    Cells(f, 8) = arr(f)
Next

With ActiveSheet.Range("C200:C300")
     .FormulaArray = "='" & "g:" & "\[" & "PPM_et_top_fournisseur.xls" & "]" _
                    & "PPM officiels" & "'!" & "J12:J43"
     .Value = .Value
End With

Dim w As Integer

For o = 1 To 32
    w = 199 + o
    rr(o) = Cells(w, 3).Value
    Cells(o, 9) = rr(o)
Next
For t = 1 To 32
    For n = 1 To 32
        If Cells(20, 1).Value <> arr(n) Then
           Cells(n, 7) = arr(n)
            Else: Cells(t, 10) = "nop"
        End If
    Next
Next
End Sub
4

1 に答える 1

1

を使おうとしているようですVLOOKUP

ただし、本当に VBA でこれを実現したい場合は、ソース ブックを 2 次元配列にロードし、配列をループしてその値を目的のシートの適切な行に出力することをお勧めします。

今週初めに同様の質問に答えました: EXCEL VBA Paste from array, change paste order

唯一の実際の違いは、データの列全体を使用し、垂直方向ではなく水平方向に再配置していたことです。

そうは言っても、VLOOKUP数式を使用して、最初の列に基づいて x 列の値を検索できるように思えます。

于 2012-07-12T13:36:56.917 に答える