С помощью условного форматирования вы можете добиться этого:
Формула в Format values where this formula is true
: (с учетом ваших таблиц)
=ISERROR(VLOOKUP($E1,Sheet1!$C:$C,1,FALSE))
*
Применяется к: =$1:$229
* Мод основан на комментарии BigBen.
Да, это верно. Он остается в таком виде, потому что ранее я пробовал другие проверки.
Пожалуйста, попробуйте следующий код VBA. Он использует Vlookup между диапазонами сразу, возвращая массив, который будет выделен столбцу F: F на листе Sheet2 и обработан для получения диапазона, который нужно выделить:
Sub MatchSNVlookup()
Dim ws1 As Worksheet, lastR1 As Long, rng1 As Range, ws2 As Worksheet, lastR2 As Long, rng2 As Range
Set ws1 = Worksheets("Sheet1")
lastR1 = ws1.Range("C" & ws1.rows.count).End(xlUp).row 'last cell in C:C
'if other cells below, place here 82, instead
Set ws2 = Worksheets("Sheet2")
lastR2 = ws2.Range("E" & ws2.rows.count).End(xlUp).row
Set rng1 = ws1.Range("C2:C" & lastR1)
Set rng2 = ws2.Range("E2:E" & lastR2)
With rng2.Offset(, 1)
.Value = Application.VLookup(rng2.Value, rng1.Value, 1, False) 'it works on a rrays, too!
.Replace "#N/A", "" 'it returns the string "#N/A" for not match, whidh will be replaced with the null string!
.SpecialCells(xlCellTypeBlanks).Offset(, -1).Interior.Color = vbYellow 'the empty cells range, Offset(,-1) = a column before is highlighted
.Clear 'the helper range id cleared!
End With
End Sub
Попробуйте использовать
Application.Match
иIsError
, может быть? «Хочу выделить красным» — это легко сделать с помощью условного форматирования, не требуя VBA.