Excel 比较两个列表并将值从一个导入到另一个
我有两张工作表,我需要做的是制作一个vba宏,将第一张工作表中的每个ID与第二张工作表中的ID匹配,并将其值复制到它旁边(第二张工作表中)。值的单元格位置将是固定的,始终在同一列中(例如第2列) 例如,第一张图纸上有一些ID和值如下的数据:Excel 比较两个列表并将值从一个导入到另一个,excel,vba,Excel,Vba,我有两张工作表,我需要做的是制作一个vba宏,将第一张工作表中的每个ID与第二张工作表中的ID匹配,并将其值复制到它旁边(第二张工作表中)。值的单元格位置将是固定的,始终在同一列中(例如第2列) 例如,第一张图纸上有一些ID和值如下的数据: Sheet: Data ID Value 356 10000 441 5000 111 4000 Sheet: Database ID Something Value 111 Foo 4000 3
Sheet: Data
ID Value
356 10000
441 5000
111 4000
Sheet: Database
ID Something Value
111 Foo 4000
356 Bar 10000
441 Foo 5000
我得到了第二张表,其中只有ID,没有按不同顺序排列的值,例如:
Sheet: Database
ID Something Value
111 Foo
356 Bar
441 Foo
当您运行宏时,它应该如下所示:
Sheet: Data
ID Value
356 10000
441 5000
111 4000
Sheet: Database
ID Something Value
111 Foo 4000
356 Bar 10000
441 Foo 5000
当然,这只是一个例子,实际数据有几百行,是的,我必须使用vba来实现这一点
首先感谢您的帮助:)这可以做到:
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值都是唯一的。您是否尝试过VLOOUP或索引/匹配?它们是Excel中更基本的检索(也称为查找)公式。浏览一下网站,这个问题一天会弹出多次,尽管我承认你的问题写得比mostI尝试搜索的更清楚。不幸的是,总是有些不同,所以我决定创建一个新问题,我相信很多人在将来会发现它非常有用和清晰,我不明白为什么会有这么多的反对票。虽然我更喜欢像application.match这样更高效的全列查找,但这比充分解决问题更有效。谢谢!对于@pomaaa来说,从.lCol=FirstSheet.Cells(x,Columns.Count).End(xlToLeft).Column开始应该是一个不错的开始