在Excel 2010中,比较列和高亮值(如果使用macros和VBA不同)的数据

我有两个工作表,两列。 在第一张工作表中,一列包含了分配给任务的手工艺者列表。 第二张工作表只包含手工艺人的名单。 我需要比较第一张工作表中的工匠,如果其值与第二张工作表中的任何值不匹配,则突出显示一个单元格。

我们最后可以列出工作表2中50个手工艺人的列表,他们可以分配到第一个工作表中的多个任务(可能有数百个任务),所以列的长度不会相同。

当我们运行Marco时,我们希望任何单元格的值(一个1)与第二个表单中的值不匹配,以红色突出显示,并用“不正确的名称”

我有一些代码,我通过在这个网站或其他search之一,并已修改它,所以它接近我想要的。 但是它突出了数据的错误方式,它突出了匹配的值,我要把那些不匹配的高亮! 我试过,但一直无法纠正这一点 – 任何人都可以帮助,并收拾整理代码?

Sub CompareAndHighlight() Dim rng1 As Range, rng2 As Range, i As Integer, j As Integer For i = 1 To Sheets("workorders").Range("U" & Rows.Count).End(xlUp).Row Set rng1 = Sheets("workorders").Range("U" & i) For j = 1 To Sheets("craftspersondata").Range("A" & Rows.Count).End(xlUp).Row Set rng2 = Sheets("craftspersondata").Range("A" & j) If StrComp(Trim(rng1.Text), Trim(rng2.Text), vbTextCompare) = 0 Then rng1.Interior.Color = RGB(255, 0, 0) rng1.Value = "Incorrect Name" End If Set rng2 = Nothing Next j Set rng1 = Nothing Next i End Sub 

我试着改变下面这行:

如果StrComp(Trim(rng1.Text),Trim(rng2.Text),vbTextCompare)= 0那么

如:StrComp(Trim(rng1.Text),Trim(rng2.Text),vbTextCompare)<> 0然后

但是这突出了列中的每一行,所以不给我需要的修复…

尝试使用以下代码:

 Sub CompareAndHighlight() Dim rng1 As Range, rng2 As Range, i As Integer, j As Integer Dim isMatch As Boolean For i = 2 To Sheets("workorders").Range("U" & Rows.Count).End(xlUp).Row isMatch = False Set rng1 = Sheets("workorders").Range("U" & i) For j = 1 To Sheets("craftspersondata").Range("A" & Rows.Count).End(xlUp).Row Set rng2 = Sheets("craftspersondata").Range("A" & j) If StrComp(Trim(rng1.Text), Trim(rng2.Text), vbTextCompare) = 0 Then isMatch = True Exit For End If Set rng2 = Nothing Next j If Not isMatch Then rng1.Interior.Color = RGB(255, 0, 0) rng1.Value = "Incorrect Name" End If Set rng1 = Nothing Next i End Sub 

你为什么要用macros做这个 – 使用条件格式会容易得多?

select您正在检查的列,然后按Ctrl + F3创build一个命名范围。 例如,将其称为CRAFT_PEOPLE。

接下来select您要在其中显示突出显示的列。 从主屏幕中select条件格式>新build规则>使用公式(列表中的最后一个)。

对于公式input:

 =ISERROR(MATCH(A1,CRAFT_PEOPLE,0)) 

将A1replace为当前所选内容的活动单元格的单元格引用 – 确保它在引用中没有$。 接下来点击格式化button,select你想要突出显示的匹配。

点击OK