8

Я хотел бы сравнить две таблицы Excel

Оба имеют одинаковые столбцы в одинаковом порядке, но не в одинаковых строках.

У меня есть электронная таблица с 1000 строк и 50 столбцами, включая уникальный идентификатор для каждой строки и личные данные (адрес, номер телефона и т.д.).

Я хочу сравнить его с той же базой, извлеченной год назад.

Моя цель - узнать все изменения (например, кто-то, кто изменил свой адрес).

Я попытался с электронной таблицей (как объяснено здесь: Сравните два файла Excel), но это не работает, потому что в моем "новом" файле у меня есть новые строки, и у меня есть несколько строк в старом файле, которых нет в новом.

Таблица сравнивается с номером строки Excel. Можно ли сравнить с первым столбцом (уникальный идентификатор)?

Вот очень упрощенный пример: https://filebin.net/g4w98251y9mfwug6

Есть два листа, представляющие мои две таблицы.

Как вы можете видеть, оба имеют одинаковые столбцы, но:

  • На обоих листах есть строки без изменений (все строки одинаковые)
  • Есть строки, которые есть на обоих листах, но есть изменения (оранжевым на моем примере)
  • Есть строки, которые есть только в декабрьском листе (мне не нужно определять эти строки)
  • Есть строки, которые есть только в январском листе (на моем примере оранжевым цветом)

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

Существует только один столбец, который никогда не может измениться: столбец А.

3 ответа3

3

Удобно, что ваша электронная таблица использует 50 столбцов, потому что это означает, что доступны столбцы № 51, № 52,….  Ваша проблема довольно легко решается с помощью «вспомогательного столбца», который мы можем поместить в столбец AZ (который является столбцом № 52).  Я предполагаю, что строка 1 на каждом из ваших листов содержит заголовки (слова ID , Name , Address и т.д.) поэтому вам не нужно сравнивать их (поскольку ваши столбцы расположены в одном и том же порядке на обоих листах).  Я также предполагаю, что ID (уникальный идентификатор) находится в столбце A (Если это не так , то ответ становится немного сложнее, но все же довольно легко.)  В ячейке AZ2 (доступный столбец в первой строке, используемой для данных) введите

=B2&C2&D2&…&X2&Y2&Z2&AA2&AB2&AC3&…&AX2

список всех ячеек от B2 до AX2& является оператором конкатенации текста, поэтому если B2 содержит Andy а C2 - New York , то B2&C2 будут сравниваться с AndyNew York .  Аналогично, приведенная выше формула объединит все данные для строки (исключая ID), что даст результат, который может выглядеть примерно так:

AndyNew York1342 Wall StreetInvestment BankerElizabeth2catcollege degreeUCLA…

Формула является длинной и громоздкой для ввода, но вам нужно сделать это только один раз (но перед тем, как сделать это, см. Примечание ниже).  Я показал, что он проходит через AX2 потому что столбец AX - это столбец № 50.  Естественно, формула должна охватывать все столбцы данных, кроме ID . В частности, он должен включать каждый столбец данных, который вы хотите сравнить.  Если у вас есть столбец для возраста человека, то это будет (автоматически?) каждый год будет другим, и вы не захотите, чтобы об этом сообщали.  И, конечно, вспомогательный столбец, который содержит формулу объединения, должен находиться где-то справа от последнего столбца данных.

Теперь выберите ячейку AZ2 и перетащите ее вниз через все 1000 строк.  И сделать это на обоих листах.

Наконец, на листе, где вы хотите, чтобы изменения были выделены (я думаю, из того, что вы говорите, что это более свежий лист), выберите все ячейки, которые вы хотите выделить.  Я не знаю, является ли это просто столбец A , или просто столбец B , или вся строка (то есть, от A до AX).  Выберите эти ячейки в строках со 2 по 1000 (или там, где ваши данные могут в конечном итоге достичь), перейдите в «Условное форматирование» → «Новое правило…», выберите «Использовать формулу для определения, какие ячейки форматировать», и введите

=IFERROR(VLOOKUP($A2,'December 2017'!$A$2:$AZ$1000,52,FALSE), "") <> $AZ2

в «Формат значения, где эта формула является истинным блоком».  Это берет значение ID из текущей строки текущего («январь 2018») листа (в ячейке $A2), ищет его в столбце A предыдущего («декабрь 2017») листа, получает объединенное значение данных из этого и сравнивает его со значением сцепленных данных в этой строке.  (Конечно, AZ - это вспомогательный столбец, 52 - номер столбца вспомогательного столбца, а 1000 - последняя строка на листе «Декабрь 2017», содержащая данные - или несколько выше; например, вы можете ввести 1200 а не беспокоиться о быть точным.)  Затем нажмите «Форматировать» и укажите необходимое условное форматирование (например, оранжевая заливка).

Я сделал пример только с несколькими строками и несколькими столбцами данных со вспомогательным столбцом в столбце H:

предыдущий месяц / год (декабрь 2017)

лист текущего месяца / года (январь 2018 г.), изменения выделены оранжевым цветом

Заметьте, что ряд Энди окрашен в оранжевый цвет, потому что он переехал из Нью-Йорка в Лос-Анджелес, а ряд Дебры окрашен в оранжевый цвет, потому что она - новая запись.

Примечание: Если строка может иметь значение , такие как и the в двух последовательных столбцах, и это может измениться в следующем году , чтобы react и there это не будет сообщаться как разница, потому что мы просто сравнивая каскадное значение, и что act является одинаковым на обоих листах.  Если вас это беспокоит, выберите символ, который вряд ли когда-либо будет в ваших данных (например, thereact), и вставьте его между полями.  Таким образом, ваш вспомогательный столбец будет содержать

=B2&"|"&C2&"|"&D2&"|"&…&"|"&X2&"|"&Y2&"|"&Z2&"|"&AA2&"|"&AB2&"|"&AC3&"|"&…&"|"&AX2

в результате получаются данные, которые могут выглядеть так:

Andy|New York|1342 Wall Street|Investment Banker|Elizabeth|2|cat|college degree|UCLA|…

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

Как только вы это заработаете, вы можете скрыть вспомогательные столбцы.

1

Перейдите на вкладку «Вид» и нажмите «Новое окно». Перейдите в новое окно и нажмите рядом. Вы можете синхронизировать прокрутку, нажав Синхронная прокрутка. Проверьте прикрепленное изображение: Excel листы рядом

Синхронная прокрутка дает вам преимущество одновременной прокрутки различных таблиц. Переключение кнопки позволит вам одновременно просматривать и прокручивать только один лист.

1

Итак, вы можете сделать одну из двух вещей.

1.- Решение OOTB состоит в том, чтобы перейти к "Данные" -> "Инструменты данных" -> «Удалить (это прямой перевод с испанского) Дубликаты». Таким образом, вы должны добавить обе таблицы, и вы получите только те данные, которые были изменены, и только уникальные. Таким образом, чтобы отфильтровать использование CountIf для ваших уникальных идентификаторов , отмените выбор того, что считается как 1. Сделайте заказ по uniqueId, и вы четко увидите, что изменилось.

2.-Используйте эту формулу

IF(Index("rangetoreturn";Match("CellofUniqueID";"Rangeofuniqueidtolookinto";0))<>"OneOftheCellthatcontainsthesameasRangeToReturn";"Info Has Changed";"InfoHasNotChanged")

Эту формулу можно перетащить вправо и вниз. Таким образом, вы получите таблицу с условием if, содержащую то же количество строк, что и таблица CellofUniqueID. Позиция "Информация изменилась", скажет вам, какая ячейка в другой таблице изменила свое содержание. Так что используйте эту формулу на новом листе и создайте новую таблицу. Затем посмотрите на фильтры и снимите флажок "InfoHasNotChanged"(или любое другое слово, которое вы хотите использовать).

"rangetoreturn" и "Rangeofuniqueidtolookinto" взяты из одной таблицы (или листа), а "CellofUniqueID" - из другой таблицы.

ура

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .