Зміст
Чи знали ви, що при об'єднанні 2-х таблиць Google можна не тільки оновлювати записи в одному стовпчику, але й витягувати цілі пов'язані стовпчики і навіть рядки, що не збігаються? Сьогодні я покажу вам, як це робиться за допомогою функцій VLOOKUP, INDEX/MATCH, QUERY і надбудови Merge Sheets.
Минулого разу, коли я розповідав про об'єднання 2 таблиць Google, я поділився способами зіставлення та оновлення даних. Цього разу ми все ще будемо оновлювати комірки, але також витягнемо інші пов'язані стовпці та рядки, що не збігаються.
Ось моя таблиця, з якої я сьогодні візьму всі необхідні дані:
Цього разу вона стала більшою: у ній з'явилися дві додаткові колонки з назвами постачальників та їхніми рейтингами. Я доповню колонку Stock цією інформацією в іншій таблиці, а також підтягну постачальників. Ну, можливо, ще й рейтинги :)
Як завжди, я буду використовувати кілька функцій і спеціальний додаток для роботи.
Об'єднати таблиці Google та додати пов'язані стовпці за допомогою VLOOKUP
Пам'ятаєте Google Sheets VLOOKUP? Я використовував його в моїй попередній статті для зіставлення даних та оновлення деяких комірок.
Якщо ця функція все ще відлякує вас, то саме час змиритися з цим і вивчити її раз і назавжди, тому що сьогодні я теж збираюся нею скористатися :)
Порада: якщо ви шукаєте швидке рішення, яке заощадить ваш час, одразу знайомтеся з Merge Sheets.
Давайте зробимо короткий огляд синтаксису формули:
=VLOOKUP(ключ_пошуку, діапазон, індекс, [is_sorted])- ключ_пошуку це те, що ти шукаєш.
- діапазон це те, що ви шукаєте.
- індекс номер стовпця, з якого потрібно повернути значення.
- [is_sorted] є абсолютно необов'язковим і вказує на те, чи відсортовано ключовий стовпець.
Порада: на нашому блозі є цілий урок, присвячений VLOOKUP Google Sheets, обов'язково подивіться.
Коли я об'єднав два гугл-аркуші і просто оновив дані в стовпчику "Запаси", я використав цю формулу VLOOKUP:
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,2,FALSE),""))
IFERROR переконався, що в комірках без збігів немає помилок, а ARRAYFORMULA обробила відразу весь стовпець.
Отже, які зміни мені потрібно внести, щоб витягнути постачальників як новий стовпець з таблиці пошуку?
Що ж, оскільки йдеться про індекс який вказує Google Sheets VLOOKUP, з якого стовпця брати дані, можна з упевненістю сказати, що саме він потребує доопрацювання.
Найпростішим способом буде просто скопіювати формулу в сусідній стовпчик і збільшити її індекс на одиницю (замінити 2 з 3 ):
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,3,FALSE),""))
Однак вам потрібно буде вставити ту саму формулу з іншим індексом стільки разів, скільки додаткових стовпців ви хочете отримати.
На щастя, є краща альтернатива - створення масивів. Масиви дозволяють об'єднати всі стовпці, які ви хочете витягнути, в одному індексі.
При створенні масиву в Google Таблицях в дужках перераховуються значення або посилання на клітинки/діапазони, наприклад ={1, 2, 3} або ={1; 2; 3}
Розташування цих записів на аркуші залежить від роздільника:
- Якщо ви використовуєте крапку з комою, числа будуть займати різні рядки в стовпчику:
Останнє якраз і потрібно зробити в аргументі індексу VLOOKUP Google Sheets.
Оскільки я об'єдную гугл-аркуші, оновлюю 2-й стовпець і витягую 3-й, то мені потрібно створити масив з цими стовпцями: {2, 3} :
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,{2,3},FALSE),""))
Таким чином, одна формула VLOOKUP в Google Sheets співставляє назви, оновлює інформацію про запаси та додає пов'язаних постачальників у порожній сусідній стовпчик.
Зіставлення та об'єднання аркушів і додавання стовпців за допомогою INDEX MATCH
Ці дві функції разом складають конкуренцію VLOOKUP, оскільки обходять його обмеження при об'єднанні аркушів Google.
Порада. Дізнайтеся більше про INDEX MATCH для Google Sheets в цьому уроці.
Дозвольте мені почати з нагадування формули, яка просто об'єднує один стовпчик на основі збігів:
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
У цій формулі, Аркуш 1! це стовпець зі значеннями, які вам потрібні, коли Аркуш 1! $B$1:$B$10 відповідає тому ж значенню, що і в B2 у поточній таблиці.
З огляду на зазначене, це Аркуш 1! що потрібно змінити, щоб не просто об'єднати таблиці та оновити комірки, а й додати стовпці.
На відміну від VLOOKUP Google Sheets, тут немає нічого хитромудрого. Ви просто вводите діапазон з усіма необхідними стовпчиками: той, який потрібно оновити, і ті, які потрібно додати. У моєму випадку це буде Аркуш1!$C$1:$D$10 :
=IFERROR(INDEX(Sheet1!$C$1:$D$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
Або я можу розширити діапазон до E10 додати 2 колонки, а не одну:
=IFERROR(INDEX(Sheet1!$C$1:$E$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
Зауважте, що зайві записи завжди потрапляють у сусідні стовпчики. Якщо в цих стовпчиках будуть інші значення, формула не перезапише їх, а видасть помилку #REF з відповідною підказкою:
Як тільки Ви очистите ці клітинки або додасте нові стовпчики зліва від них, з'являться результати формули.
Об'єднати аркуші Google, оновити комірки та додати пов'язані стовпці - і все це за допомогою QUERY
QUERY - одна з найпотужніших функцій в електронних таблицях Google. Тому не дивно, що сьогодні я збираюся використати її для об'єднання декількох таблиць Google, оновлення комірок і додавання додаткових стовпців одночасно.
Ця функція відрізняється від інших тим, що один з її аргументів використовує командну мову.
Порада: якщо вам цікаво, як користуватися функцією ЗАПИТ в Google Таблицях, відвідайте цей блог.
Спочатку згадаємо формулу, яка оновлює комірки:
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "select C where&QUERY!$B2:$B$10&"""),"")
Тут QUERY переглядає таблицю з потрібними даними на аркуші 1, співставляє комірки в стовпці B з моєю поточною новою таблицею, і об'єднує ці аркуші: витягує дані з стовпця C для кожного збігу. IFERROR зберігає результат без помилок.
Щоб додати додаткові стовпчики для цих матчів, потрібно внести 2 невеликі зміни в цю формулу:
- перерахувати всі обов'язкові колонки для вибрати командування:
...виберіть C, D, E...
- розширити асортимент, щоб виглядати відповідно:
...QUERY(Sheet1!$A$2:$E$10,...
Ось повна формула:
=IFERROR(QUERY(Лист1!$A$2:$E$10, "select C,D,E where&Лист4!$B2:$B$10&"""),"")
Він оновлює стовпець запасів і витягує 2 додаткові стовпці з таблиці пошуку в цю основну таблицю.
Як додати рядки, що не збігаються, за допомогою ФІЛЬТР + ВПЛИВ
Уявіть собі: ви об'єднуєте 2 гугл-аркуші, оновлюєте стару інформацію на нову і отримуєте нові стовпчики з додатковими пов'язаними значеннями.
Що ще можна було б зробити, щоб мати повну картину наявних записів?
Можливо, додати рядки, що не збігаються, в кінець таблиці? Таким чином, ви матимете всі значення в одному місці: не тільки збіги з оновленою відповідною інформацією, але й не збіги, щоб їх можна було врахувати.
Я був приємно здивований, що Google Sheets VLOOKUP вміє це робити. При використанні разом з функцією FILTER він об'єднує аркуші Google, а також додає рядки, що не збігаються.
Порада: В кінці я також покажу, як одне доповнення робить те ж саме за допомогою одного прапорця.
Аргументи ФІЛЬТРА Google Sheets досить зрозумілі:
=ФІЛЬТР(діапазон, умова1, [умова2, ...])- діапазон дані, які ви хочете відфільтрувати.
- умова1 стовпець або рядок з критерієм фільтрації.
- критерії2, критерії3 і т.д. є абсолютно необов'язковими. Використовуйте їх, коли потрібно використовувати декілька критеріїв.
Порада. Детальніше про функцію ФІЛЬТР Google Таблиць ви дізнаєтесь у цьому блозі.
Так як же ці дві функції уживаються разом і об'єднують таблиці Google? Ну, FILTER повертає дані на основі критеріїв фільтрації, створених VLOOKUP.
Подивіться на цю формулу:
=FILTER(Лист1!$A$2:$E$10,ISERROR(VLOOKUP(Лист1!$B$2:$B$10,$B$2:$C$10,2,FALSE)=1))
Він сканує 2 таблиці Google на наявність збігів і витягує рядки, що не збігаються, з однієї таблиці в іншу:
Поясню, як це працює:
- ФІЛЬТР переходить до листа пошуку (таблиця з усіма даними - таблиця з даними Лист 1! $A$2:$E$10 ) і використовує VLOOKUP для отримання правильних рядків.
- VLOOKUP бере назви елементів з колонки B на цьому аркуші пошуку і порівнює їх з назвами з моєї поточної таблиці. Якщо збігу немає, VLOOKUP повідомляє, що сталася помилка.
- ISERROR позначає кожну таку помилку цифрою 1, вказуючи FILTERу перенести цей рядок на інший аркуш.
В результаті формула витягує 3 додаткові рядки для тих ягід, які не зустрічаються в моїй основній таблиці.
Це не так вже й складно, якщо трохи погратися з цим методом :)
Але якщо ви не хочете витрачати на це свій час, є кращий і швидший спосіб - без жодної функції і формули.
Безформульний спосіб зіставлення та об'єднання даних - надбудова Merge Sheets
Доповнення Merge Sheets охоплює всі 3 можливості при об'єднанні аркушів Google:
- оновлює пов'язані комірки на основі збігів
- додає нові стовпці для цих матчів
- вставляє рядки з записами, що не збігаються
Щоб уникнути плутанини, процес поділяється на 5 простих кроків :
- Перші два там, де ви обирайте столики навіть якщо вони знаходяться в різних таблицях.
- На 3-й ви повинні вибрати ключову(і) колонку(и) які слід перевірити на збіги.
- На сьогоднішній день, на жаль, це не так. 4-й крок дозволяє вам встановити стовпці для оновлення з новими рекордами або додати з одного аркуша на інший:
Пройшло кілька секунд, і я побачив результат:
Встановіть Merge Sheets з магазину Google Таблиць, і ви побачите, що він обробляє великі таблиці так само швидко. Завдяки Merge Sheets у вас буде більше часу на важливі справи.
Я також залишу це 3-хвилинне демонстраційне відео, щоб допомогти вам визначитися :)
Електронна таблиця з прикладами формул
Об'єднати гугл-аркуші, додати пов'язані стовпці та рядки, що не збігаються - приклади формул (зробити копію цієї таблиці)