0
Sub Nameitem()
Dim Baza As Range
Dim Lista As Range
For Each Lista In Range("C12:C32")
        For Each Baza In Range("[Back.xlsx]New_Games!$B$2:$B$10000")
            If Baza.Value = Lista.Value Then
        'copy E Column from Back(baza) to D in Lista
        else
        'no set value
        End if
    Next 
Next
End Sub

我刚开始在 excel 中编写宏,我需要帮助编写一些函数来将 EX 列形式 1 excel 复制到另一个 excel 中的 DY 列

4

2 回答 2

0

我会使用 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
于 2013-07-10T08:26:31.013 回答
0
Application.Workbooks("book1").Worksheets("sheet1").Range("E:X").Copy _    
             Application.Workbooks("book2").Worksheets("sheet2").Range("D:Y")

在将同一工作簿中的工作表作为代码引用时,您可以将 Application.Workbooks("...").Worksheets("...") 替换为工作表代号。

于 2013-07-10T08:16:23.800 回答