0

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

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

另外,我将来可能想扩展它,所以我是否还可以指定 Sheet1 可以是活动工作表,但 sheet2 由工作表名称调用?

4

4 回答 4

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
于 2013-03-11T17:11:33.710 回答
0

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

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

那么如果 A 列未找到匹配项,您将使用条件格式将单元格变为红色!

高温高压

菲利普

于 2013-03-11T17:15:43.130 回答
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
于 2013-03-11T16:59:36.140 回答
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
于 2013-03-11T17:30:20.217 回答