Макрос инвентаризации / условное форматирование - PullRequest
0 голосов
/ 24 сентября 2018

Я беру проект, в котором я построил карту мест, в которых инвентарь дома.На одном листе находится карта, а на другом - инвентарь, который не сдвинулся за X количество дней, извлеченных из запроса.То, что я хочу сделать, это выделить местоположение на карте красным цветом, которое соответствует местоположению со старым инвентарем.

Примеры каждого:

Map_Locations

Old_Inventory_With_Location

Я попытался сделать это с помощью условного форматированияно не смог придумать формулу для достижения этой цели, я также написал следующий код, надеясь на те же результаты, но безуспешно (запуск приводит к аварийному завершению Excel):

Sub Highlight()

Dim Locations As Range
Dim Old_Inv As Range
Dim MyRange As Range
Dim MyRange2 As Range

Set Locations = Worksheets("Sheet3").Range("C4:CD71")
Set Old_Inv = Worksheets("Sheet2").Range("C2:C20000")

For Each MyRange In Locations
    For Each MyRange2 In Old_Inv
        If MyRange.Value = MyRange2.Value Then
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorDark2
            End With

        End If

        Next MyRange2
        Next MyRange

End Sub

Обратите внимание, у меня очень мало опытаиспользуя VBA, извините, если это далеко от цели.Любые мысли или предложения будут высоко ценится

1 Ответ

0 голосов
/ 24 сентября 2018

Для условного форматирования:

  • Выберите ячейку C4 вашего листа местоположения
  • Открыть условное форматирование, Управление правилами, Новое правило
  • Выберите «Использоватьформула для определения по ячейкам для форматирования "(последний вариант)
  • Введите следующую формулу в поле" значения формата, где эта формула истинна "(обратите внимание, что вам, возможно, придется изменить формулу, если у вас другие языковые настройки)
    =NOT(ISNA(VLOOKUP(C4, Sheet2!$C$2:$C$2000,1,FALSE)))
  • Нажмите кнопку форматирования, чтобы выбрать нужный цвет (на вкладке «Заливка»)
  • 2 раза нажмите Ok и введите =$C$4:$CD$71 в поле «Относится к"

Пояснение формулы:

VLOOKUP будет искать значение ячейки C4 (1-й параметр) в заданном диапазоне Sheet2 (2-й параметр).Он возвращает это значение (3-й параметр, 1 в формуле говорит об этом), если найдено точное значение (4-й параметр должен быть FALSE).

Если значение не найдено, Excel возвращает #NA, что проверяется окружающей функцией IsNA.Так как это отформатировало бы ячейки, в которых значение , а не в списке, окружите весь материал функцией NOT -, которая вернет результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...