找出并突出差异

嗨,我知道有很多关于同一主题的问题,我在这里,他们似乎并没有解决我的问题在这里。 我有一个任务来比较两个工作表(A和B)基于这两个工作表的D列,我想find并突出显示B中不存在的行。代码如下所示:

Dim i As Long Dim data As Range Dim ref As Range Dim lastRow As Long Worksheets("B").UsedRange Set ref = Worksheets("test").Columns("D:D").Value lastRow = Worksheets("B").UsedRange.Rows.Count Application.ScreenUpdating = False Application.DisplayAlerts = False ' check if data exist in both shts For i = 10 To lastRow Set data = Worksheets("B").Columns("D:D").Find(ref,LookIn:=xlValues, _ LookAt:=xlWhole) If data Is Nothing Then data.EntireRow.Interior.ColorIndex = 36 Exit For Else End If Next 

现在的问题是,设置ref的行有一个所需的对象的错误,行不突出显示。

screenupdating函数被closures了一个较短的运行时间,但它仍然需要一些时间来运行我的代码,这是文件或代码的问题?

build议将非常感激。

更新使用下面的代码解决任务:

  With Worksheets("test") For i = 4 To lastRow For j = 4 To lastnewRow If Worksheets("test").Cells(i, 9) = Worksheets("B").Cells(j, 9) Then Exit For Else If j = lastnewRow Then Worksheets("test").Cells(i,9).EntireRow.Interior.ColorIndex = 36 End If End If Next Next End With 

试试这个代码:

 Dim shtARng As Range, cell As Range With Worksheets("A") '<--| change "A" with your actual sheet name Set shtARng = .Range("D1", .Cells(.Rows.Count, 4).End(xlUp))) '<--| change "D1" to the column D actual initial row to start your check from End With With Worksheets("B") '<--| change "B" with your actual sheet name For Each cell in .Range("D1", .Cells(.Rows.Count, 4).End(xlUp))) If shtARng.Find(What:=cell.Value, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) Is Nothing Then cell.EntireRow.Interior.ColorIndex = 36 Next cell End With 

你可以很容易地做到这一点,没有VBA。 您将在Excel中使用的function称为条件格式。

因此,如果要突出显示Sheet 2中不在Sheet 1 Column A中的所有单元格,则可以selectSheet 1的单元格,在条件格式窗口中创build一个新规则并select

“使用公式来确定要格式化的单元格”

然后你插入下面的公式

 =ISNA(MATCH(A1,Sheet1!A:A,0)) 

在“格式”下,select要应用于符合此条件的单元格的样式。

  • MATCHsearch单元格A1的值(也包括您select的所有其他单元格)的值,并检查它们是否存在于数组Sheet1!A:A是整列A
  • 如果找不到该值,则返回#N/A ,因此我们希望expression式为true。 这就是为什么我们使用函数ISNA(expression) ,在这种情况下返回true。