根据外部工作簿

时间:2015-08-11 04:29:26

标签: vba excel-vba excel

我想从外部工作簿中提取信息,给出来自2个不同工作簿的匹配项目ID。

例如,如果工作簿A包含项目ID 130021A而工作簿B包含相同的项目ID,则工作簿A将从工作簿B中提取该项目ID的信息。

以下代码仅适用于特定范围的项目ID。但是,我需要浏览工作簿A和工作簿B中的所有项目ID。

Sub AAA()

If Workbooks("Source.xlsm").Sheets("Sheet2").Range("A2").Value = _
        Workbooks("Target.xlsm").Sheets("Sheet1").Range("A2").Value Then
   Workbooks("Source.xlsm").Sheets("Sheet2").Range("B2").Value = _
        Workbooks("Target.xlsm").Sheets("Sheet1").Range("C2").Value
End If
End Sub

如何修复此问题以获取所有ID?

1 个答案:

答案 0 :(得分:0)

下面的代码应该适合你。我没有运行或调试它,但如果您发现任何错误,请告诉我们,并且可能有人可以提供帮助。

Dim row as integer
Dim row1 as integer
Dim totalrowss as integer 'source rows
Dim totalrowsd as integer 'destination rows
Dim wkbs as Workbook 'source workbook
Dim wkbd as Workbook 'destination workbook
Dim wkss as Worksheet 'source worksheet
Dim wksd as Worksheet 'destination worksheet

Set wkbs = workbooks("Source.xlsm")
Set wkbd = workbooks("Target.xlsm")
Set wkss = wkbs.worksheets("Sheet2")
Set wksd = wkbd.worksheets("Sheet1")

totalrowss = wkss.Cells.SpecialCells(xlCellTypeLastCell).Row
totalrowsd = wksd.Cells.SpecialCells(xlCellTypeLastCell).Row

For row = 2 to totalrowss
    For row1 = 2 to totalrowsd
        If wkss.Cells(row, 1) = wksd.Cells(row1, 1) Then
            wksd.Cells(row1, 3) = wkss.Cells(row, 2)
            'Exit for              'Remove ' before Exit if only one match can exist
        End if
    Next row1
Next row