Использование VLookup с условным форматированием при вставке новой строки - PullRequest
0 голосов
/ 05 марта 2020

У меня есть два листа, и я пытаюсь повторно применить условное форматирование к Листу 1 (Тест 1) всякий раз, когда строка вставляется в строку 2 Листа 1 (я заставил свой код применять условное форматирование всякий раз, когда ячейка A2 изменено).

Для условного форматирования я хочу проверить, существует ли каждая видимая ячейка в столбце A Лист 1 в столбце A Лист 2 с Vlookup, и применяет ли он к нему условный формат Грина.

У меня есть два разных кода, которые я пытаюсь использовать в Листе 1 («Тест 1»), и оба они применяют условный формат с формулами, но ни одна из ячеек в Листе 1 Столбец A не поворачивается зеленый при выполнении условия, которое я задал формулой.

Вот оба моих кода, мне нужен только один для работы, только разные формулы:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Address = "$A$2" Then

    Dim lr As Long

    lr = Range("A" & Sheet4.rows.Count).End(xlUp).Row

        With Range("A2:A" & lr)

            .FormatConditions.Delete

            .FormatConditions.Add Type:=xlExpression, Formula1:="IF(ISLBANK(Vlookup(A2,'Test 2'!$A:$B,1,False)),TRUE,FALSE)"

            .FormatConditions(1).Interior.Color = vbGreen

        End With

    End If

End Sub

И вторая формула I также пробовал это:

Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Address = "$A$2" Then

    Dim lr As Long

    lr = Range("A" & Sheet4.rows.Count).End(xlUp).Row

        With Range("A2:A" & lr)

            .FormatConditions.Delete

            .FormatConditions.Add Type:=xlExpression, Operator:=xlExpression, Formula1:="Not(ISERROR(Vlookup(A2,'Test 2'!$A:$B,1,False)))"

            .FormatConditions(1).Interior.Color = vbGreen

        End With

    End If

End Sub

Кросс-пост с: https://www.mrexcel.com/board/threads/using-vlookup-with-conditional-formatting-when-inserting-a-new-row.1126560/

Я обновлю оба сообщения, если я получу ответ, спасибо !

1 Ответ

3 голосов
/ 05 марта 2020

Второй фрагмент кода близок, вам не хватает = перед Not:

Formula1:="=Not(ISERROR(Vlookup(A2,'Test 2'!$A:$B,1,False)))"

Обратите внимание на кавычки вокруг всей формулы на скриншоте ниже, что у вас сейчас есть: enter image description here

Более простая формула для использования может быть следующей:

Formula1:="=COUNTIF('Test 2'!$A:$A,A2)>0"

РЕДАКТИРОВАТЬ : на основе комментариев добавление второго правила может выглядеть так:

.FormatConditions.Add Type:=xlExpression, Operator:=xlExpression, Formula1:="=COUNTIF('Test 2'!$A:$A,A2)>0"
.FormatConditions.Add Type:=xlExpression, Operator:=xlExpression, Formula1:="=COUNTIF('Test 2'!$A:$A,A2)=0"

.FormatConditions(1).Interior.Color = vbGreen
.FormatConditions(2).Interior.Color = RGB(255, 199, 206)
...