从另一个工作表中的一个工作表中识别相似的单元格内容

时间:2016-06-28 11:44:20

标签: excel excel-vba vba

我有两本excel工作簿。一个工作簿中的列包含我需要与第二个工作簿中的列中的相应名称匹配的名称。

如何在不进行个别搜索的情况下自动为所有记录执行此操作?

1 个答案:

答案 0 :(得分:0)

问题中没有太多信息。但是按照以下假设,下面的代码将给出结果,如图所示。

<强>假设:

1。正如问题 匹配对应名称 中所述,我假设您希望匹配数据行,即匹配row1- row1,row2-row2,依此类推 2。要比较的两个文件file1file2分别包含Sheet3Sheet2中的数据。 (根据需要更改文件名和工作表名称)
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的同一个实例中打开,以使此代码生效。

enter image description here