突出显示其他工作表中不存在的行的宏

时间:2013-03-11 16:37:28

标签: excel vba excel-vba

我有一个包含两个工作表的文件,两个都有很多名称和地址。如果该行的单元格A与第二张表的A列中的任何行都不匹配,我需要一个宏来突出显示第一张表格中的行。

因此,如果连续的第一个单元格在sheet2的A列中的任何数据中没有匹配的数据,那么该行将突出显示为红色。

此外,我可能希望将来扩展它,所以我还可以指定Sheet1可以是活动工作表,但工作表2是否按工作表名称调用?

4 个答案:

答案 0 :(得分:1)

尝试以下代码:

Sub Sample()

    Dim lastRow As Integer
    Dim rng As Range
    lastRow = Sheets("Sheet1").Range("A65000").End(xlUp).Row

    For i = 1 To lastRow
        Set rng = Sheets("sheet2").Range("A:A").Find(Sheets("Sheet1").Cells(i, 1))
        If rng Is Nothing Then
            Sheets("Sheet1").Cells(i, 1).EntireRow.Interior.Color = vbRed
        End If
    Next
End Sub

答案 1 :(得分:0)

这是一种丑陋的蛮力方法:

Dim r As Range
Dim s As Range

For Each r In ActiveSheet.UsedRange.Rows
  For Each s In Sheets("Sheet2").UsedRange.Rows
    If r.Cells(1, 1).Value = s.Cells(1, 1).Value Then
      r.Interior.ColorIndex = 3
    End If
  Next s
Next r

这是一种更流畅的方式:

Dim r As Range
Dim s As Range

Set s = Sheets("Sheet2").Columns(1)

For Each r In ActiveSheet.UsedRange.Rows
  If Not (s.Find(r.Cells(1, 1).Value) Is Nothing) Then
    r.Interior.ColorIndex = 3
  End If
Next r

答案 2 :(得分:0)

这是一种使用工作表公式的方法:

=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),"NOT FOUND",VLOOKUP(A:A,Sheet2!A:A,1,FALSE))

然后,如果列A找不到匹配项,您将使用条件格式设置将单元格变为红色!

HTH

菲利普

答案 3 :(得分:0)

怎么样:

Sub CondFormatting()


Range("D1:D" & Range("A1").End(xlDown).Row).Formula = "=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),""NOT FOUND"",VLOOKUP(A:A,Sheet2!A:A,1,FALSE))"

With Columns("D:D")
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""NOT FOUND"""
    .FormatConditions(1).Interior.ColorIndex = 3
End With

    Range("I16").Select
End Sub