Як порівняти дві таблиці Excel?


8

Я хотів би порівняти дві таблиці Excel

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

У мене є електронна таблиця з 1000 рядками та 50 стовпцями, що містить унікальний ідентифікатор для кожного рядка та особисті дані (адресу, номер телефону тощо).

Я хочу порівняти його з тією ж базою, видобутою рік тому.

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

Я намагався з електронною таблицею (як пояснено тут: Порівняйте два файли Excel ), але вона не працює, тому що в моєму «новому» файлі у мене є нові рядки, і у мене є рядки в старому файлі, які не в новому.

Порівняйте таблицю з номером рядка Excel. Чи можна порівняти з першим стовпцем (Унікальний ідентифікатор)?

Ось дуже спрощений приклад: https://filebin.net/g4w98251y9mfwug6

Є два аркуші, які представляють мої дві електронні таблиці.

Як ви бачите, обидва мають однакові стовпці, але:

  • Є рядки, які знаходяться на обох аркушах без змін (усі рядки однакові)
  • На обох аркушах є рядки, але є зміни (на моєму прикладі помаранчевим кольором)
  • Є рядки, які є лише у грудневому аркуші (мені не потрібно ідентифікувати ці рядки)
  • Є рядки, які є лише в січневому аркуші (на моєму прикладі оранжевим кольором)

Помаранчевий колір - це саме те, що я хочу, але в цьому прикладі я можу це зробити вручну: порівнюючи грудень і січень. У реальних електронних таблицях я не можу це зробити вручну, оскільки є занадто багато змін, даних, рядків, стовпців тощо, і я буду це робити щомісяця.

Є лише один стовпець, який ніколи не може змінитися: стовпець А.


FYI, люди не люблять завантажувати файли, особливо коли їх розміщують невідомі користувачі. Я не кажу, що ви не повинні завантажувати файли та розміщувати посилання на них, але намагайтеся зробити так, щоб ваше питання стояло самостійно - це слід зрозуміти, не дивлячись на файли. Я фактично вважаю, що ваше питання добре, як є; Я зміг відповісти на це, не дивлячись на файл. Але, звичайно, питання (особливо питання 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 Wall StreetInvestment BankerElizabeth2catcollege ступіньUCLA…

Формула є тривалою та громіздкою, але це потрібно зробити лише один раз (але див. Примітку нижче, перш ніж це зробити насправді). Я показав це через те, 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

У цьому ж представленні можна застосувати фільтри до стовпців. Додайте формули пошуку на будь-який із робочих аркушів.
Чеца Нідо

Я не хочу застосовувати фільтри до стовпців ... У мене є дві електронні таблиці (один рядок = один працівник), і я хочу висвітлити дані, змінені (адреса, телефон ..) для кожного працівника, між старою електронною таблицею (остання місяць) та нову електронну таблицю (цього місяця) Я не можу робити це вручну щомісяця. Це більше 1 000 рядків у кожній електронній таблиці та 50 стовпців
CILUEA

Ви можете використовувати пошук АБО індекс + формулу відповідності разом із умовним форматуванням. Чи можна поділитися своїм аркушем з деякими зразковими даними?
Чеца Нідо,

Я редагував свою публікацію на прикладі та більше пояснень. Дякую!
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" - з іншої таблиці.

Ура


Дякую ! Перше рішення може бути найпростішим, але воно не працює: (чи, можливо, я не добре зрозумів?) Опція "видалити дублікат" видалить деякі рядки, і я хочу зберегти всі рядки в обох аркушах. Крім того, я лише мати один стовпчик на аркуші з унікальними даними, Усі інші стовпці містять багато рядків з однаковими даними всередині (наприклад, дві особи з однаковою датою народження або з тим самим віком ..)
CILUEA

Варіант 2: що таке rangetoreturn / Rangeofuniqueidtolookinto / OneOftheCellthatcontainsthesameasRangeToReturn?
CILUEA

@CILUEA для варіанту 2, "rangeofreturn" - це той спектр інформації, який ви хочете повернути. "Rangeofuniqueidtolookinto" - це буквально діапазон унікальних програм, де ви шукаєте свій унікальний ідентифікатор. "OneOftheCellthatcontainsthesameasRangeToReturn" - це інформація, яку ви будете порівнювати з тією, яку ви повертаєте назад, тож якщо вона буде іншою, вона вам скаже. На жаль, немає комфортної відповіді, якщо ви не знаєте трохи VBA, що, здається, не подобається.
dmb

@CILUEA для варіанту 1, ви повинні зробити нову таблицю з обох таблиць. Потім видаліть дублікати. Тоді ви також можете використовувати CountIfта фільтрувати по 2 випадки, коли у вас є 1 час, означає, що інформація не змінилася. Нарешті, замовлення за вашим унікальним ідентифікатором. Також киньте прапор у новий стовпчик стовпців, щоб ви знали, з якої таблиці надходила ваша інформація. Тепер ви чітко бачите, у чому полягають відмінності
dmb

@Scott "Out of the Box" ... Помилився там, це має бути OOTB, вибачте, англійська мова не є моєю першою мовою.
dmb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.