我有一个带有两个工作表的文件,它们都是名称和地址。如果该行的单元格A与第二个表格的列A中的任何行不匹配,则需要一个将突出显示第一个表格中的行的宏。突出显示其他工作表中不存在的行的宏
因此,如果一行中的第一个单元格在sheet2的A列中的任何数据中没有匹配的数据,那么该行将突出显示为红色。
另外我可能想在将来扩展这个,所以我可以指定Sheet1可以是活动工作表,但sheet2是由工作表名称调用的吗?
我有一个带有两个工作表的文件,它们都是名称和地址。如果该行的单元格A与第二个表格的列A中的任何行不匹配,则需要一个将突出显示第一个表格中的行的宏。突出显示其他工作表中不存在的行的宏
因此,如果一行中的第一个单元格在sheet2的A列中的任何数据中没有匹配的数据,那么该行将突出显示为红色。
另外我可能想在将来扩展这个,所以我可以指定Sheet1可以是活动工作表,但sheet2是由工作表名称调用的吗?
试试下面的代码:
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
这工作很好! – jardane 2013-03-11 17:27:20
@jardane如果您同意解决方案,请接受/投票。 – 2013-03-11 17:29:20
这里是一个丑陋的蛮力方法:
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
不起作用,无论发生什么,都会使每件事物都变成红色。 – jardane 2013-03-11 17:15:13
@jardane,我测试了这两种方法,我能想到的是,您的工作表没有像您的问题所述(或所有行匹配)组织。 – 2013-03-11 17:16:47
看看下面我的答案,而不是使用宏,使用Excel的工作表公式VLOOKUP搜索,并使用条件格式,如果不匹配 – 2013-03-11 17:16:49
下面是一个使用工作表公式的方法:
=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),"NOT FOUND",VLOOKUP(A:A,Sheet2!A:A,1,FALSE))
然后你会使用条件格式来打开单元格,如果列A没有找到匹配!
HTH
菲利普
这个怎么样:
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
是否必须是一个宏。这可以通过公式和条件格式轻松完成。它也可以自动应用于一个必须运行的宏(尽管它可以绑定到一个事件以便自动运行)。 – SomeSillyName 2013-03-11 16:45:43
我同意@SomeSillyName。如果结果显示列A不匹配,请在工作表中放入VLOOKUP或INDEX/MATCH公式并使用条件格式。 – 2013-03-11 17:07:32
根本不需要宏。遵循@philip的想法 – 2013-03-11 17:13:52