Сохранение измененного цвета заливки после поиска INDEX и MATCH

Добрый вечер.

Я уже несколько часов с трудом пытаюсь найти свою проблему в Google, но я думаю, что трудно объяснить, что я пытаюсь найти. В любом случае...

У меня есть список серийных номеров из инвентаря, и я уже добавил функции и условное форматирование для поиска введенного значения по всему столбцу серийных номеров. Моя проблема в том, что я хочу автоматизировать процесс, выделяя совпадающее значение и сохраняя его выделенным для лучшей визуализации. Моя электронная таблица уже провела поиск значения в инвентаре, возвращает мне номер строки, в которой находится совпадающее значение, и описание найденного элемента, однако я хочу, чтобы элемент в инвентаре выделялся и оставался выделенным.

У меня был аналогичный результат с условным форматированием, однако после поиска следующего серийного номера стиль исчез из предыдущей ячейки и перешел к следующему совпавшему элементу. Вместо этого я хотел, чтобы он остался с прежним цветом заливки.

Любая помощь с VBA или условным форматированием будет оценена по достоинству.

Мои функции для поиска данных и так далее ...

Чтобы найти строку строки, в которой был сопоставлен серийный номер: =MATCH(H2;F:F;0)

Чтобы получить описание найденного предмета: =INDEX(D:D;MATCH(H2;F:F;0))

Чтобы поймать, был ли предмет найден или нет в инвентаре: =IFERROR(IF(MATCH(H2;F:F;0);"FOUND !");"NOT FOUND !")


person mattdaspy    schedule 30.10.2020    source источник
comment
Звучит довольно сложно - можно ли создать минимальный пример с образцами данных?   -  person tohuwawohu    schedule 30.10.2020


Ответы (1)


Условное форматирование не будет работать, поскольку оно захватит только текущий элемент поиска. Для достижения желаемого вам понадобится код VBA. Проверьте следующий код (и внесите соответствующие изменения).

Он должен быть размещен внутри объекта Sheet в навигаторе проекта VBA. Каждый раз, когда вы обновляете ячейку, он проверяет, является ли измененная ячейка той, в которой вы ищете элемент. Если это так, он перейдет в указанную строку и изменит цвет фона этой ячейки на желтый.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("SEARCH CELL ADDRESS"), Range(Target.Address)) Is Nothing And Range("FOUND ROW ADDRESS") <> "NOT FOUND !" Then
        Cells(Range("FOUND ROW ADDRESS").Value, 1).Color = 65535
    End If
End Sub
person Rafael Américo Sartori    schedule 01.11.2020