Сравнение таблиц – это задача, которую в Excel приходится довольно часто решать. Чтобы проверить, имеется ли значение из первой таблицы во второй, можно использовать формулы поиска, например, ВПР.

К примеру, у нас есть старый прайс-лист и его новая версия. Нужно просмотреть, цены на какие товары изменились и на сколько.

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

Итак, вот наши исходные данные.

исходные данные для сравнения двух таблиц

По количеству строк сразу заметно, что во втором прайсе произошли какие-то изменения среди товаров. Да и цены на отдельные позиции также поменялись. Давайте сравним таблицы, попробуем определить изменения и представить их наиболее наглядно.

Для этого используем несколько способов.

  1. При помощи функции ВПР для каждого товара из прайс-листа №2 будем искать цену в первом прайс-листе и выводить ее рядом с новой. Так легче будет определить различия.
  2. Построим сводную таблицу по данным обоих прайс-листов, и там эти отличия увидим.
  3. Используем стандартную операцию сравнения.
  4. Применим формулу массива.

1. Используем ВПР, чтобы сравнить две таблицы.

Создадим именованный диапазон B4:C19 и назовем его «прайс1». Так нам будет проще ссылаться на первоначальные данные.

Добавим к новым данным еще одну колонку и назовем ее «Цена старая». Для каждого наименования из прайс-листа №2 найдем соответствующую ему цену в №1.

Используем ВПР, чтобы сравнить две таблицы

В Н4 вводим формулу

=ВПР(F4;прайс1;2;0)

и копируем ее вниз по столбцу.

Видим, что кое-где изменилась цена, и в четырех наименованиях формула ВПР возвратила ошибку #Н/Д. Это означает, что ранее этих товаров не было и цену для них обнаружить не удалось.

Чтобы придать результатам сравнения более красивый вид и чтобы  можно было определить размер изменения цены, обработаем появившиеся сообщения об ошибке.

Для этого используем функцию ЕСЛИОШИБКА и вместо #Н/Д выведем ноль.

Изменим нашу формулу:

=ЕСЛИОШИБКА(ВПР(F4;прайс1;2;0);0)

Теперь мы можем рассчитать отклонения новой цены от старой.

Можно показать результаты сравнения двух таблиц с использованием ВПР более наглядно и красиво. Давайте результаты сравнения вынесем отдельно.

сравнение двух таблиц при помощи ВПР

Согласитесь, что такое сравнение выглядит гораздо аккуратнее и нагляднее.

Формула в J4:

=ЕСЛИ(ЕСЛИОШИБКА(ВПР(F4;прайс1;2;0);0)=G4;""; ЕСЛИОШИБКА(ВПР(F4;прайс1;2;0);0))

Выглядит сложно и громоздко, но на самом деле все просто. Основа здесь та же, что и ранее: поиск в первой таблице «старой» цены каждого товара из новых данных.

То есть, ключевым является выражение  ЕСЛИОШИБКА(ВПР(F4;прайс1;2;0);0).

Если найденное значение равно «новой» цене из ячейки G4, то выводим пустой пробел “”.

Значения смежных ячеек привязаны к этому результату.

Если ячейка J4 пуста, тогда ничего не выводим и в остальных:

Формула в I4:

=ЕСЛИ(J4<>"";F4;"")

в К4:

=ЕСЛИ(J4<>"";G4;"")

в L4:

=ЕСЛИ(J4<>"";K4-J4;"")

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

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

То есть, сравнивать придется в двух направлениях.

Согласитесь, не всегда хочется делать двойную работу.

2. Сравнение таблиц при помощи сводной таблицы.

Поскольку структура сравниваемых данных одинакова, то мы можем объединить их. Чтобы различить, откуда взяты какие значения, добавьте еще один столбец и укажите там источник данных – прайс1 или прайс2.

Используя наш предыдущий пример, это можно сделать следующим образом:

Теперь через меню Вставка-Сводная таблица создадим свод, можно на этом же листе для наглядности.

Сравнение таблиц при помощи сводной таблицы

Как видите, сводная таблица выводит в алфавитном порядке все уникальные (неповторяющиеся) значения из обоих прайс-листов и напротив каждого из них проставляет соответствующую цену. Так очень легко можно отследить все изменения.

Чтобы не мешали, итоги по строкам и столбцам можно убрать. Для этого используйте вкладку Конструктор – Общие итоги – Отключить итоги для строк и столбцов.

Это еще один пример того, что у функции ВПР есть весьма достойные альтернативные варианты во многих случаях.

Главный недостаток здесь – данные нужно предварительно подготовить, объединив их в единый массив.

Следует также отметить, что с большими объемами данных сводные таблицы умеют работать гораздо быстрее, чем ВПР.

3. Стандартное построчное сравнение.

Это самые простой и элементарный способ сравнить два столбца Excel на совпадения. Работать таким образом возможно как с числовыми значениями, так и с текстовыми.

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

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

Для примера сравним два прайса, записав в столбце I условие совпадения цены

=G4=C4

При равенстве мы получим ответ «ИСТИНА», а если совпадения нет, будет «ЛОЖЬ». Копируем из I4 вниз по столбцу.

Этот способ сравнения таблиц – самый элементарный, поэтому останавливаться на нем более не будем.

4. Использование формул массива вместе с ВПР.

Здесь все гораздо сложнее. Вновь вернемся к нашим исходным данным и разместим списки товаров и цен на двух листах рабочей книги: «Прайс1» и «Прайс2».

Создадим из наименований товаров в каждой из таблиц именованный диапазон, как это показано на рисунке.

Назовем их соответственно «прайс_1» и «прайс_2». Так нам легче будет разбираться в формулах.

Результаты сравнения таблиц вынесем также на отдельный лист «Сравнение».

В ячейке A5 запишем формулу

=ЕСЛИОШИБКА(ЕСЛИОШИБКА(ИНДЕКС(прайс_1; ПОИСКПОЗ(0;СЧЁТЕСЛИ(A$4:$A4;прайс_1);0)); ИНДЕКС(прайс_2;ПОИСКПОЗ(0;СЧЁТЕСЛИ(A$4:$A4;прайс_2);0)));"")

Поскольку это формула массива, то не забудьте завершить ее ввод комбинацией клавиш Ctrl+Shift+Enter.

В  результате получим список уникальных (неповторяющихся) значений из всех имеющихся у нас наименований товаров.

Рассмотрим процесс пошагово. Формула последовательно берет значения из списка наименований. Затем при помощи функции СЧЕТЕСЛИ определяется количество совпадений с каждым из значений в ячейках, находящихся выше этого значения. Если результат СЧЕТЕСЛИ равен нулю, значит это наименование ранее не встречалось и можно его занести в список.

Использование формул массива вместе с ВПР для сравнения таблиц

Функция ПОИСКПОЗ вычисляет номер позиции этого  уникального значения и передает его в функцию ИНДЕКС, которая, в свою очередь, по номеру позиции извлекает значение из массива и записывает его в ячейку.

Поскольку это формула массива, то мы последовательно проходим по всему списку от начала до конца, повторяя все эти операции.

Если первая таблица закончилась, то возникает ошибка. Функция ЕСЛИОШИБКА реагирует на это и начинает таким же образом перебирать значения второй таблицы. Когда и там возникает ошибка, то возвращается пустая строка “”.

Скопируйте эту формулу по столбцу вниз. Список уникальных значений готов.

Затем добавим еще два столбца, в которых при помощи функции ВПР запишем результат сравнения двух таблиц по каждому наименованию товара.

Запишем в В5:

=ЕСЛИ(ЕНД(ВПР(A5;прайс_1;1;0));"Нет";"Есть")

Не забудьте, что это тоже формула массива (Ctrl+Shift+Enter).

Можно для наглядности выделить несовпадения цветом, используя условное форматирование.

выделить результат сравнения таблиц условным форматированием

Напомним, что для этого надо использовать меню Главная – Условное форматирование – Правила выделения ячеек – Текст содержит…

Ну и если значение существует в таблице, то логично было бы его вывести в таблице сравнения.

Заменим в нашей формуле значение «Есть» на функцию ВПР:

ВПР(A5;Прайс1!$B$5:$C$20;2;0)

В итоге наше формула преобразуется к виду:

=ЕСЛИ(ЕНД(ВПР(A5;прайс_1;1;0));"Нет";ВПР(A5;Прайс1!$B$5:$C$20;2;0))

Аналогично в С5 :

=ЕСЛИ(ЕНД(ВПР(A5;прайс_2;1;0));"Нет";ВПР(A5;Прайс2!$B$5:$C$23;2;0))

Напомним, что на листах Прайс1 и Прайс2 находятся наши сравниваемые таблицы.

Для сравнения двух таблиц вы можете выбрать любой из этих методов исходя из собственных предпочтений.

Также рекомендую обратить внимание на эту статью: 9 способов сравнить две таблицы в Excel и найти разницу.