Excel 找出并突出差异
嗨,我知道有很多问题和我在这里问的是同一个话题,它们似乎不能解决我在这里的问题。 我的任务是根据两张表的D列比较两张表(a和B),我想找到并突出显示B中a中不存在的行。 代码如下所示:Excel 找出并突出差异,excel,vba,Excel,Vba,嗨,我知道有很多问题和我在这里问的是同一个话题,它们似乎不能解决我在这里的问题。 我的任务是根据两张表的D列比较两张表(a和B),我想找到并突出显示B中a中不存在的行。 代码如下所示: 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 = Wo
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的行有一个objectrequired错误,并且行没有高亮显示
屏幕更新功能在较短的运行时间内关闭,但运行我的代码仍然需要一些时间,这是文件的问题还是代码的问题
非常感谢您的建议
更新使用以下代码解决的任务:
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
Dim shtARng作为范围,单元格作为范围
使用工作表(“A”)尝试以下代码:
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
Dim shtARng作为范围,单元格作为范围
有了工作表(“A”)您就可以在没有VBA的情况下轻松完成这项工作。您将在excel中使用的功能称为条件格式
因此,如果要突出显示工作表2
中不在工作表1
列A中的所有单元格,可以选择工作表1
中的单元格,在条件格式窗口中创建新规则并选择
“使用公式确定要格式化的单元格”
然后插入以下公式
=ISNA(MATCH(A1,Sheet1!A:A,0))
在“格式”下,选择要应用于符合此条件的单元格的样式
MATCH
搜索单元格A1
中的值(以及您选择的所有其他单元格),并检查它们是否存在于数组Sheet1!A:A
哪一列是整个A列
- 如果找不到值,则返回
#N/A
,因此我们希望表达式为true。这就是为什么我们使用函数ISNA(expression)
,在这种情况下返回true
无需VBA即可轻松完成此操作。您将在excel中使用的功能称为条件格式
因此,如果要突出显示
工作表2
中不在工作表1
列A中的所有单元格,可以选择工作表1
中的单元格,在条件格式窗口中创建新规则并选择
“使用公式确定要格式化的单元格”
然后插入以下公式
=ISNA(MATCH(A1,Sheet1!A:A,0))
在“格式”下,选择要应用于符合此条件的单元格的样式
MATCH
搜索单元格A1
中的值(以及您选择的所有其他单元格),并检查它们是否存在于数组Sheet1!A:A
哪一列是整个A列
- 如果找不到值,则返回
#N/A
,因此我们希望表达式为true。这就是为什么我们使用函数ISNA(expression)
,在这种情况下返回true
您试图访问数据的属性,但前提是数据没有任何意义。这是因为我试图处理仅存在于表B中的行,代码不正确吗?我理解,但这只是我代码的一部分。我要做的是检查A表中的列表是否包含B表中的所有内容,如果没有,则突出显示工作表B中不存在的行,稍后我将不得不处理该数据。您尝试仅在“数据为零”的情况下访问数据的属性,这完全没有意义。这是因为我试图处理仅存在于工作表B中的行,代码不对吗?我明白,但这只是我代码的一部分。我要做的是检查表A中的列表是否包含表B中列表的所有内容,如果没有,则突出显示表B中不存在的行,我稍后将不得不处理这些数据。谢谢!代码解决了突出显示的问题,但它似乎突出显示了我的整个excel表。。。有什么建议吗?我不在我的电脑旁,所以你只需在代码中放置一些断点,然后用F8单步执行,看看发生了什么!在单步执行代码时,使用即时窗口查询变量值(例如:“?shtARng.Address”、“?cell.Address、cell.Value”),我认为问题在于,当我设置shtRng的范围时,它不会向我返回任何信息,这就是为什么整张表都会突出显示的原因,但为什么会是这样?还是我正在比较的单元格中的值在excel中不“可比”?因为它包含字母和数字,并且有-、()和/。谢谢!代码解决了突出显示的问题,但它似乎突出显示了我的整个excel表。。。有什么建议吗?我不在我的电脑旁,所以你只需在代码中放置一些断点,然后用F8单步执行,看看发生了什么!在单步执行代码时,使用即时窗口查询变量值(例如:“?shtARng.Address”、“?cell.Address、cell.Value”),我认为问题在于,当我设置shtRng的范围时,它不会向我返回任何信息,这就是为什么整张表都会突出显示的原因,但为什么会是这样?还是我正在比较的单元格中的值在excel中不“可比”?因为它包含字母和数字,并且有-、()和/。感谢您的详细回答:)我知道这个函数,但我只是尝试自动化这个过程,因为在突出显示数据后,我想将其复制到第三个工作表,所以如果可以在vb编辑器的同一模块中完成,那就太好了,但是谢谢你的回答;)谢谢你的详细回答:)我知道这个函数,但我只是尝试自动化这个过程,因为在突出显示数据后,我想将其复制到第三个工作表,因此如果可以在vb编辑器的同一模块中完成,那就太好了,但回答时请使用thx;)