我有两本excel工作簿。一个工作簿中的列包含我需要与第二个工作簿中的列中的相应名称匹配的名称。
如何在不进行个别搜索的情况下自动为所有记录执行此操作?
答案 0 :(得分:0)
问题中没有太多信息。但是按照以下假设,下面的代码将给出结果,如图所示。
<强>假设:强>
1。正如问题 匹配对应名称 中所述,我假设您希望匹配数据行,即匹配row1- row1,row2-row2,依此类推
2。要比较的两个文件file1
和file2
分别包含Sheet3
和Sheet2
中的数据。 (根据需要更改文件名和工作表名称)
3。最终结果突出显示绿色中的匹配名称和红色颜色中的不匹配名称。 (因为没有任何关于所需输出的问题,我还在file2
中显示“匹配”和“不匹配”作为另一种选择)
Sub Compare()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lastRow As Long, matchCount As Long
'two sheets to be used of different files
Set ws1 = Workbooks("file1").Sheets("Sheet3")
Set ws2 = Workbooks("file2").Sheets("Sheet2")
matchCount = 0
'get last row with data from file1
lastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
'loop through all the names in column A
'starting with 2 to exclude header
For i = 2 To lastRow
If ws1.Range("A" & i) = ws2.Range("A" & i) Then
'if names match change cell color to green in file2
'also write match in column B
ws2.Range("A" & i).Interior.ColorIndex = 43
ws2.Range("A" & i).Offset(0, 1).Value = "Match"
matchCount = matchCount + 1
Else
'if names does not match change cell color to red in file2
'also write no match in column B
ws2.Range("A" & i).Interior.ColorIndex = 3
ws2.Range("A" & i).Offset(0, 1).Value = "No Match"
End If
Next
MsgBox "Out of " & lastRow - 1 & " there were " & matchCount & " cells matching."
End Sub
注意:两个文件都应在Excel的同一个实例中打开,以使此代码生效。