我有两张纸,而我要做的是制作一个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 。
非常感谢您的帮助:)
答案 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值都是唯一的。