Как сравнить две таблицы Excel?

8

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

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

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

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

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

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

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

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

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

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

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

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

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

CILUEA
источник
К вашему сведению, люди не любят скачивать файлы, особенно когда они публикуются неизвестными пользователями. Я не говорю, что вы не должны загружать файлы и размещать на них ссылки, но постарайтесь сделать ваш вопрос самостоятельным - это должно быть возможно понять, не глядя на файлы. Я действительно считаю, что ваш вопрос в порядке, как есть; Я смог ответить на него, не глядя на файл. Но, конечно, вопросы (особенно вопросы Excel) более понятны с примерами данных. … (Продолжение)
Скотт
1
(Продолжение) ... Мы предпочитаем, чтобы вы опубликовали текстовое представление ваших данных, как это было сделано здесь и здесь ; если хотите, используйте сайт « Формат текста как таблица» или « Генератор таблиц простого текста» . Я полагаю, что данные, которые я использовал в своем ответе, представляют собой правильную сумму: по одной строке в каждой из четырех категорий, которые вы указали в вопросе.
Скотт
Там есть хороший инструмент Excel для сравнения. Он может сравнить 2 файла Excel и вывести различия. Вы также можете попробовать Araxis Merge, хотя это не бесплатно.
Кромстер

Ответы:

4

Удобно, что ваша электронная таблица использует 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 Уолл-стритИнвестиционный банкирЭлизабет2Каталог колледжаУч…

Формула является длинной и громоздкой для ввода, но вам нужно сделать это только один раз (но прежде чем вы это сделаете, см. Примечание ниже). Я показал это, 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

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

Энди | Нью-Йорк | 1342 Уолл-стрит | Инвестиционный банкир | Элизабет | 2 | Кошка | Высшее образование | UCLA |…

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

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

Скотт
источник
1

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

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

Цеза Нидо
источник
У меня более 1000 строк в каждой электронной таблице ... 50 столбцов ... некоторые данные очень трудно сравнивать при просмотре (банковские данные, номер телефона, даты ...) Это слишком долго, чтобы действовать таким образом, и существует риск ошибок / пропусков мне придется делать это ежемесячно. Нет более быстрого решения? :(
CILUEA
В том же виде вы можете применять фильтры к столбцам. Добавьте формулы поиска на любой из рабочих листов.
Четза Нидо
Я не хочу применять фильтры к столбцам ... У меня есть две таблицы (одна строка = один сотрудник), и я хочу выделить данные, измененные (адрес, телефон ..) для каждого сотрудника, между старой таблицей (последней месяц) и новую электронную таблицу (в этом месяце). Я не могу делать это вручную каждый месяц. Это более 1000 строк в каждой электронной таблице и 50 столбцов
CILUEA,
Вы можете использовать формулу поиска ИЛИ index + match вместе с условным форматированием. Можно ли поделиться своим листом с некоторыми образцами данных?
Четза Нидо
Я отредактировал свое сообщение с примером и дополнительными пояснениями .. Спасибо!
CILUEA
1

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

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

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

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

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

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

ура

DMB
источник
Спасибо ! Первое решение может быть самым простым, но оно не работает: (или, может быть, я плохо понял?) Опция «Удалить дубликаты» удалит некоторые строки, и я хочу сохранить все строки на обоих листах. Кроме того, я только есть один столбец на листе с уникальными данными, все остальные столбцы имеют много строк с одинаковыми данными внутри (например, два человека с одинаковой датой рождения или одинаковым возрастом ..)
CILUEA
Вариант 2: что такое rangetoturn / Rangeofuniqueidtolookinto / OneOftheCell, которые содержат одинаковые значенияRangeToReturn?
CILUEA
@CILUEA для варианта 2, «rangeofreturn» - это диапазон информации, которую вы хотите вернуть. «Rangeofuniqueidtolookinto» - это буквально набор уникальных идентификаторов, где вы будете искать свой уникальный идентификатор. «OneOftheCellthatcontainsthesameasRangeToReturn» - это информация, которую вы будете сравнивать с той, которую вы возвращаете, поэтому, если она будет другой, она сообщит вам. К сожалению, нет удобного ответа, если вы не знаете немного VBA, что не похоже на это.
18:00
@CILUEA для варианта 1, вы должны сделать новую таблицу из обеих таблиц. Затем удалите дубликаты. Затем Вы также можете использовать CountIfи фильтровать по 2 вхождениям, если у вас 1 вхождение означает, что информация не изменилась. Наконец, закажите свой уникальный идентификатор. Также добавьте флаг в новый столбец столбцов, чтобы вы знали, из какой таблицы пришла ваша информация. Теперь вы можете ясно увидеть, в чем различия
августа
@ Скотт "Из коробки" ... Сделал ошибку, там должно быть OOTB, извините, английский не мой родной язык.
августа