我有一个包含两个工作表的文件,两个都有很多名称和地址。如果该行的单元格A与第二张表的A列中的任何行都不匹配,我需要一个宏来突出显示第一张表格中的行。
因此,如果连续的第一个单元格在sheet2的A列中的任何数据中没有匹配的数据,那么该行将突出显示为红色。
此外,我可能希望将来扩展它,所以我还可以指定Sheet1可以是活动工作表,但工作表2是否按工作表名称调用?
答案 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