Съдържание
Знаете ли, че когато обединявате 2 листа на Google, можете не само да актуализирате записи в една колона, но и да изтегляте цели свързани колони и дори несъответстващи редове? Днес ще ви покажа как се прави това с функциите VLOOKUP, INDEX/MATCH, QUERY и добавката Merge Sheets.
Последния път, когато говорих за сливането на 2 листа на Google, споделих начини за съвпадение & актуализиране на данните. Този път все още ще актуализираме клетките, но ще изтеглим и други свързани колони и несъвпадащи редове.
Това е моята таблица за търсене. Днес ще взема всички необходими данни от нея:
Този път тя е по-голяма: има две допълнителни колони с имена на доставчици и техните рейтинги. Ще актуализирам колоната "Складови наличности" с тази информация в друга таблица и ще изтегля и доставчиците. Е, може би и рейтингите :)
Както обикновено, ще използвам няколко функции и специална добавка за тази задача.
Обединяване на листове на Google & добавяне на свързани колони с помощта на VLOOKUP
Спомняте ли си VLOOKUP в Google Sheets? Използвах го в предишната си статия, за да сравня данни и да актуализирам някои клетки.
Ако тази функция все още ви плаши, крайно време е да се сблъскате с нея и да я научите веднъж завинаги, защото днес ще я използвам и аз :)
Съвет. Ако търсите бързо решение, което да ви спести време, веднага се запознайте с Merge Sheets.
Нека направим кратко обобщение на синтаксиса на формулите:
=VLOOKUP(search_key, range, index, [is_sorted])- search_key е това, което търсите.
- обхват е мястото, което търсите.
- индекс е номерът на колоната, от която се връща стойността.
- [is_sorted] е напълно незадължителна и указва дали ключовата колона е сортирана.
Съвет. В нашия блог има цял урок, посветен на VLOOKUP в Google Sheets, не се колебайте да го разгледате.
Когато обединих два листа на Google и просто актуализирах данните в колоната Stock, използвах тази формула 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 Sheets, изброявате стойностите или препратките към клетки/обхвати в скоби, напр. ={1, 2, 3} или ={1; 2; 3}
Подредбата на тези записи в листа зависи от разделителя:
- Ако използвате точка и запетая, числата ще заемат различни редове в една колона:
Последното е точно това, което трябва да направите в аргумента за индекса VLOOKUP на Google Sheets.
Тъй като сливам листове на Google, актуализирам втората колона и изтеглям третата, трябва да създам масив с тези колони: {2, 3} :
=ArrayFormula(IFERROR(VLOOKUP($B$2:$B$10,Sheet1!$B$2:$D$10,{2,3},FALSE),""))
По този начин една VLOOKUP формула на Google Sheets съпоставя имената, актуализира информацията за запасите и добавя свързани доставчици в празна съседна колона.
Съпоставяне на & сливане на листове и добавяне на колони с INDEX MATCH
Следващата функция е INDEX MATCH. Тези две функции заедно се конкурират с VLOOKUP, тъй като заобикалят нейните ограничения при обединяването на листове на Google.
Съвет. Запознайте се с INDEX MATCH за Google Sheets в този урок.
Нека започна, като ви напомня формулата, която просто обединява една колона въз основа на съвпаденията:
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
В тази формула, Sheet1!$C$1:$C$10 е колона с необходимите стойности, когато Лист1!$B$1:$B$10 отговаря на същата стойност като в B2 в текущата таблица.
Като се имат предвид тези точки, е Sheet1!$C$1:$C$10 които трябва да промените, за да можете не само да обединявате таблици и да актуализирате клетки, но и да добавяте колони.
За разлика от 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, да актуализирам клетките и да добавям допълнителни колони едновременно.
Тази функция се различава от останалите, тъй като един от аргументите ѝ използва команден език.
Съвет. Ако се чудите как да използвате функцията QUERY в Google Sheets, посетете тази публикация в блога.
Нека припомним формулата, която първо актуализира клетките:
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "изберете C където&QUERY!$B2:$B$10&""),"")
Тук QUERY разглежда таблицата с необходимите данни в лист1, сравнява клетките в колона B с моята текуща нова таблица и обединява тези листове: за всяко съвпадение изтегля данни от колона C. IFERROR поддържа резултата без грешки.
За да добавите допълнителни колони за тези съвпадения, трябва да направите две малки промени в тази формула:
- списък на всички задължителни колони за изберете команда:
...изберете C,D,E...
- разширете диапазона, за да изглеждате съответно:
...QUERY(Sheet1!$A$2:$E$10,...
Ето пълната формула:
=IFERROR(QUERY(Sheet1!$A$2:$E$10, "изберете C,D,E където&Sheet4!$B2:$B$10&""),"")
Тя актуализира колоната за запаси и изтегля 2 допълнителни колони от таблицата за търсене към тази основна таблица.
Как да добавяте несъответстващи редове с помощта на FILTER + VLOOKUP
Представете си следното: сливате 2 листа на Google, актуализирате старата информация с новата и получавате нови колони с допълнителни свързани стойности.
Какво още бихте могли да направите, за да имате пълна представа за наличните записи?
Може би трябва да добавите несъответстващи редове в края на таблицата? По този начин ще имате всички стойности на едно място: не само съвпаденията с актуализираната свързана информация, но и несъответствията, за да бъдат отчетени.
Бях приятно изненадан, че VLOOKUP на Google Sheets умее да прави това. Когато се използва заедно с функцията FILTER, тя обединява листове на Google и добавя и несъответстващи редове.
Съвет. Накрая ще покажа и как една добавка прави същото с едно квадратче за отметка.
Аргументите на Google Sheets FILTER са доста ясни:
=FILTER(обхват, условие1, [условие2, ...])- обхват са данните, които искате да филтрирате.
- условие1 е колона или ред с критерий за филтриране.
- критерии2, критерии3 и т.н. са напълно незадължителни. Използвайте ги, когато трябва да използвате няколко критерия.
Съвет. В тази публикация в блога ще научите повече за функцията FILTER на Google Sheets.
И така, как тези две функции се съчетават и обединяват листове на Google? Ами, FILTER връща данните въз основа на критериите за филтриране, създадени от VLOOKUP.
Вижте тази формула:
=FILTER(Sheet1!$A$2:$E$10,ISERROR(VLOOKUP(Sheet1!$B$2:$B$10,$B$2:$C$10,2,FALSE)=1))
Тя сканира 2 таблици на Google за съвпадения и изтегля несъответстващите редове от едната таблица в другата:
Нека обясня как работи:
- ФИЛТЪР отива в листа за търсене (таблица с всички данни - Лист1!$A$2:$E$10 ) и използва VLOOKUP, за да получи правилните редове.
- VLOOKUP взема имената на елементите от колона В на този лист за търсене и ги сравнява с имената от текущата ми таблица. Ако няма съвпадение, VLOOKUP съобщава за грешка.
- ISERROR маркира всяка такава грешка с 1, като казва на FILTER да прехвърли този ред в друг лист.
В резултат на това формулата извлича 3 допълнителни реда за тези плодове, които не се срещат в основната ми таблица.
Не е толкова сложно, след като си поиграете малко с този метод :)
Но ако не искате да прекарвате времето си в това, има по-добър и по-бърз начин - без нито една функция и формула.
Начин за сравняване на данни без формули & сливане на данни - добавка Merge Sheets
Добавката за сливане на листове обхваща всички 3 възможности за сливане на листове на Google:
- актуализира свързаните клетки въз основа на съвпаденията.
- добавя нови колони за тези съвпадения.
- вмъква редове с несъответстващи записи
За да се избегне объркване, процесът е разделен на 5 прости стъпки :
- Първите две са там, където изберете вашите маси дори ако са в различни електронни таблици.
- На 3d , трябва да изберете ключова(и) колона(и) които трябва да бъдат проверени за съвпадения.
- Сайтът 4-та стъпка ви позволява да задаване на колоните за актуализиране с нови записи или добавете от един лист на друг:
Изминаха няколко секунди, докато видя резултата:
Инсталирайте Merge Sheets от магазина на Google Sheets и ще видите, че обработва по-големи таблици също толкова бързо. Благодарение на Merge Sheets ще имате повече време за важни неща.
Оставям и това 3-минутно демонстрационно видео, за да ви помогна да вземете решение :)
Електронна таблица с примери за формули
Сливане на листове на Google, добавяне на свързани колони & несъответстващи редове - примери за формули (направете копие на тази електронна таблица)