Здравствуйте, друзья. Одна из распространенных ситуаций – когда есть два списка, и нужно найти их пересечения. Сегодня я расскажу, как найти первое совпадение по одному списку в другом.

совпадение в двух таблицах

Пример. Есть таблица «События», где описано, что происходило в течение дня. Одна ячейка – одно событие, в порядке следования, с утра до вечера (см. изображение выше).

Вторая таблица – «Отслеживаемые события». Там всего два пункта. Мы хотим определить, какое из отслеживаемых событий наступило раньше, руководствуясь последовательностью из первой таблички. Иными словами, первое пересечение.

В этой статье применяется формула массива. Когда вводите её в ячейку, нажимайте Ctrl+Shift+Enter вместо Enter. Фигурные скобки писать не нужно, они появятся автоматически!

Конструируем формулу массива по шагам:

  1. С помощью функции СЧЁТЕСЛИ посчитаем, сколько раз каждое событие встречается в таблице отслеживаемых данных:

    {=СЧЁТЕСЛИ(D3:D4;B3:B18)}

    Формула вернёт виртуальный массив с количеством совпадений для каждой строчки списка. Для наглядности, выведу его на экран:количество совпадений
  2. Добавим в эту формулу условие, чтобы преобразовать нули и единицы в ИСТИНУ и ЛОЖЬ:

    {=СЧЁТЕСЛИ(D3:D4;B3:B18)>0}

    количество совпадений

    Первое сверху значение ИСТИНА – это и будет то событие, которое мы ищем.

  3. Осталось найти это первый элемент ИСТИНА с помощью функции ПОИСКПОЗ:

    {=ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(D3:D4;B3:B18)>0;0)}

    Найден индекс совпадения

    Получили индекс найденного элемента в списке.

  4. Выведем найденный элемент с помощью функции ИНДЕКС:

    =ИНДЕКС(B3:B18;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(D3:D4;B3:B18)>0;0))

    совпадение найдено

Мы получили ожидаемый результат. Можно еще предусмотреть случай, когда совпадений вообще нет. В этом случае формула вернет ошибку #Н/Д. Тогда обернем нашу формулу в функцию обработки ошибок:

=ЕСНД(ИНДЕКС(B3:B18;ПОИСКПОЗ(ИСТИНА;СЧЁТЕСЛИ(D3:D4;B3:B18)>0;0));»Совпадений нет»)

формула с обработчиком ошибок

Можете сделать как у меня в примере: с помощью условного форматирования: текст становится красным, если внутри ячейки строка «Совпадений нет».

Надеюсь, вы разобрались, как это работает. Если нет – задавайте вопросы в комментариях!

Скачать пример