我正在尝试在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
答案 0 :(得分:1)
看起来您正在尝试使用VLOOKUP
。
但是,如果你真的想在VBA中实现这一点,我建议将源书加载到二维数组中,然后循环遍历数组,将其值输出到适当行中的目标表。
本周早些时候我在这里回答了类似的问题:EXCEL VBA Paste from array, change paste order
唯一真正的不同之处在于,人们正在使用整列数据,而是水平重新排列而不是垂直重新排列。
话虽如此,听起来您可以使用VLOOKUP
公式根据第一列查找x列值。