我有一個帶有兩個工作表的文件,它們都是名稱和地址。如果該行的單元格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