我会使用 Workbook 对象打开另一个工作簿。
Dim wbBaza As Workbook
Set wbBaza = Workbooks.Open("Back.xlsx")
然后您可以通过以下方式访问其他工作簿中的数据;
wbBaza.Sheets("New_Games").Range()
像在你的代码中一样循环它;
For Each Baza in wbBaza.Sheets("New_Games").Range("B2:B10000")
我不明白你所说的 EX 和 DY 列是什么意思,但如果它的数据与你比较的值在同一行中,只需使用范围来覆盖该列......例如:
For Each Baza in wbBaza.Sheets("New_Games").Range("B2:F10000")
然后,如果目标列是 F,您可以.. 例如使用 .Cells() 从中复制;
Lista.Cells(1,1) = Baza.Cells(1,5)
这是因为 Baza 的范围是从 B 到 F,所以 B,C,D,E,F=5
您当然也需要打开复制位置的范围......因为在您的代码中,您只有那一列 Range("C12:C32")
编辑; 哦,对了,您需要从 E:X 复制到 D:Y,但在这种情况下,我仍然会通过 .Cells 制作一个循环...
糟糕的版本会不会像这样?
For Each Lista In Range("A12:X32")
For Each Baza In wbBaza.Sheets("New_Games").Rows
If Lista.Cells(1, 3) = Baza.Cells(1, 2) Then
For iLoop = 5 To 25 ' E=5 to X=25
Lista.Cells(1, iLoop - 1) = Baza.Cells(1, iLoop)
Next
End If
If Baza.Row = 10000 Then
Exit For
End If
Next
Next