2013-03-11 27 views
0

我有一個帶有兩個工作表的文件,它們都是名稱和地址。如果該行的單元格A與第二個表格的列A中的任何行不匹配,則需要一個將突出顯示第一個表格中的行的宏。突出顯示其他工作表中不存在的行的宏

因此,如果一行中的第一個單元格在sheet2的A列中的任何數據中沒有匹配的數據,那麼該行將突出顯示爲紅色。

另外我可能想在將來擴展這個,所以我可以指定Sheet1可以是活動工作表,但sheet2是由工作表名稱調用的嗎?

+2

是否必須是一個宏。這可以通過公式和條件格式輕鬆完成。它也可以自動應用於一個必須運行的宏(儘管它可以綁定到一個事件以便自動運行)。 – SomeSillyName 2013-03-11 16:45:43

+1

我同意@SomeSillyName。如果結果顯示列A不匹配,請在工作表中放入VLOOKUP或INDEX/MATCH公式並使用條件格式。 – 2013-03-11 17:07:32

+0

根本不需要宏。遵循@philip的想法 – 2013-03-11 17:13:52

回答

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 
+0

這工作很好! – jardane 2013-03-11 17:27:20

+0

@jardane如果您同意解決方案,請接受/投票。 – 2013-03-11 17:29:20

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 
+0

不起作用,無論發生什麼,都會使每件事物都變成紅色。 – jardane 2013-03-11 17:15:13

+0

@jardane,我測試了這兩種方法,我能想到的是,您的工作表沒有像您的問題所述(或所有行匹配)組織。 – 2013-03-11 17:16:47

+0

看看下面我的答案,而不是使用宏,使用Excel的工作表公式VLOOKUP搜索,並使用條件格式,如果不匹配 – 2013-03-11 17:16:49

0

下面是一個使用工作表公式的方法:

=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),"NOT FOUND",VLOOKUP(A:A,Sheet2!A:A,1,FALSE)) 

然後你會使用條件格式來打開單元格,如果列A沒有找到匹配!

HTH

菲利普

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 
相關問題