0

我正在尝试在 VBA 中编写从另一个工作簿获取数据并将其粘贴到正确位置的代码。例如:

在一个工作簿中:

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 中完成此操作,我建议将源书加载到二维数组中,然后循环遍历数组以将其值输出到适当行中的目标工作表。

本周早些时候我在这里回答了一个类似的问题:EXCEL VBA Paste from array, change paste order

唯一真正的区别似乎是该人使用了整列数据,并且水平重新排列而不是垂直排列。

话虽如此,听起来您确实可以使用VLOOKUP公式根据第一列查找 x 列值。

于 2012-07-12T13:36:56.917 回答