在Excel中将数据从一张纸移动到另一张纸。

时间:2012-07-12 13:29:17

标签: excel vba excel-vba

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试使用VLOOKUP

但是,如果你真的想在VBA中实现这一点,我建议将源书加载到二维数组中,然后循环遍历数组,将其值输出到适当行中的目标表。

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

唯一真正的不同之处在于,人们正在使用整列数据,而是水平重新排列而不是垂直重新排列。

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