比较两个列表并将值从一个导入到另一个

时间:2018-10-14 09:31:11

标签: excel vba excel-vba

我有两张纸,而我要做的是制作一个vba宏,该宏将使第一张纸中的每个ID与第二张纸中的ID匹配,并在其旁边复制它的值(在第二张纸中)。值的单元格位置将固定,始终位于同一列(例如第2列)中。

例如,第一张纸具有一些ID和值如下的数据:

 Sheet: Data

ID    Value
356   10000
441    5000
111    4000

我得到的第二张表只包含ID,而没有以不同顺序排列的值,例如:

Sheet: Database
ID     Something   Value
111    Foo
356    Bar
441    Foo

运行宏时,它应如下所示:

Sheet: Database
ID     Something   Value
111    Foo         4000
356    Bar         10000
441    Foo         5000

当然,这只是一个例子,实际数据有几百行,并且是的,我必须为此使用vba

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:4)

这可以解决问题:

Sub CompareCopy()
Dim FirstSheet As Worksheet
Set FirstSheet = ActiveWorkbook.Worksheets("Sheet1")
Dim SecondSheet As Worksheet
Set SecondSheet = ActiveWorkbook.Worksheets("Sheet2")
Dim lrow As Integer
Dim lrowCompare As Integer
Dim Val As String
Dim ValCompare As String
Dim i As Integer
Dim j As Integer

lrow = FirstSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row in Sheet1
lrowCompare = SecondSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Find last row in Sheet2

For i = 2 To lrow 'Loop through ID column in Sheet 1
    Val = FirstSheet.Cells(i, 1).Value 'Get ID Value in Sheet 1
    For j = 2 To lrowCompare 'Loop through ID column Sheet 2
      ValCompare = SecondSheet.Cells(j, 1).Value 'Get Value ID in Sheet 2
        If Val = ValCompare Then 'Compare the Values
            SecondSheet.Cells(j, 3) = FirstSheet.Cells(i, 2) 'Copy Value from Sheet1 to Sheet2
        End If
    Next j
Next i
End Sub

代码假定所有ID值都是唯一的。