Съдържание
Днешната публикация в блога представя всички начини за сливане на 2 листа в Google. Ще използвате VLOOKUP, INDEX/MATCH, QUERY и добавката Merge Sheets за актуализиране на клетките в един лист от записи от друг лист въз основа на съвпадения в общи колони.
Обединяване на листове на Google с помощта на функцията VLOOKUP
Първото нещо, към което може да се обърнете, когато трябва да съпоставите и обедините два листа на Google, е функцията VLOOKUP.
Синтаксис & употреба
Тази функция претърсва определена колона за определена ключова стойност и извлича един от свързаните записи от същия ред в друга таблица или лист.
Въпреки че VLOOKUP в Google Sheets обикновено се смята за една от най-трудните функции, всъщност тя е доста проста и дори лесна, след като я опознаете.
Нека разгледаме набързо неговите компоненти:
=VLOOKUP(search_key, range, index, [is_sorted])- search_key Това може да бъде произволен текстов низ, число или препратка към клетка.
- обхват е тази група клетки (или таблица), в която ще търсите search_key и откъде ще изтеглите свързаните записи.
Забележка. VLOOKUP в Google Sheets винаги сканира първата колона на обхват за search_key .
- индекс е номерът на колоната в рамките на тази обхват откъдето искате да изтеглите данните.
Например, ако диапазонът за търсене е A2:E20 и трябва да получите данните от колона E, въведете 5. Но ако диапазонът е D2:E20, ще трябва да въведете 2, за да получите записи от колона E.
- [is_sorted] е единственият аргумент, който можете да пропуснете. Използва се, за да укаже дали колоната с ключови стойности е сортирана (TRUE) или не (FALSE). Ако е TRUE, функцията ще работи с най-близкото съвпадение, ако е FALSE - с пълното. Когато е пропуснат, по подразбиране се използва TRUE.
Съвет: Имаме подробно ръководство, посветено на VLOOKUP в Google Sheets. Разгледайте го, за да научите повече за функцията, нейните особености & ограничения и да получите повече примери за формули.
Имайки предвид тези аргументи, нека използваме VLOOKUP, за да обединим два листа на Google.
Да предположим, че имам малка таблица с плодове и техните идентификатори в лист 2. Наличността на склад обаче е неизвестна:
Нека наречем тази таблица основна, тъй като целта ми е да я попълня.
В лист1 има и друга таблица с всички данни, включително наличността на склад:
Ще я нарека таблица за търсене, тъй като ще погледна в нея, за да получа данните.
Ще използвам функцията VLOOKUP на Google Sheets, за да обединя тези два листа. Функцията ще съпостави ягодите в двете таблици и ще изтегли съответната информация за "запасите" от търсенето в основната таблица.
=VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE)
Ето как тази формула обединява точно два листа на Google:
- Тя търси стойността от B2 (основен лист) в колона B на лист1 (лист за търсене).
Забележка. Не забравяйте, че VLOOKUP сканира първата колона на посочения диапазон - Лист1!$B$2:$C$10 .
Забележка: Използвам абсолютни препратки за обхвата, защото копирам формулата надолу по колоната и следователно трябва този обхват да остане един и същ на всеки ред, за да не се наруши резултатът.
Вижте също: Как да намерите и маркирате дубликати в Excel - FALSE в края казва, че данните в колона B (в листа за търсене) не са сортирани, така че ще се разглеждат само точните съвпадения.
- След като има съвпадение, Google Sheets VLOOKUP извлича свързания запис от втората колона на този диапазон (колона C).
Скриване на грешките, връщани от VLOOKUP в Google Таблици - IFERROR
Но какво да кажем за грешките #N/A?
Виждате ги в онези редове, в които плодовете нямат съвпадения в друг лист и няма какво да се върне. За щастие има начин да държите такива клетки празни вместо това.
Просто обвийте VLOOKUP на Google Sheets в IFERROR:
=IFERROR(VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE),"")
Съвет. Улавяне и отстраняване на други грешки, които VLOOKUP в Google Sheets може да върне, като използвате решенията от това ръководство.
Съвпадение & актуализиране на записите за цялата колона наведнъж - ArrayFormula
Още нещо, което бих искал да спомена, е как да съпоставяте и обединявате данни от Google Sheets за цялата колона наведнъж.
Тук няма нищо особено, само още една функция - ArrayFormula.
Просто заменете записа с ключ в една клетка в Google Sheets VLOOKUP с цялата колона и поставете цялата формула в ArrayFormula:
=ArrayFormula(IFERROR(VLOOKUP(B2:B10,Sheet1!$B$2:$C$10,2,FALSE),""))
По този начин няма да е необходимо да копирате формулата надолу по колоната. ArrayFormula ще върне веднага правилния резултат във всяка клетка.
Въпреки че VLOOKUP в Google Sheets е идеален за такива прости задачи, той има някои ограничения. Ето един от недостатъците: той не може да гледа в лявата си част. Какъвто и диапазон да посочите, той винаги сканира първата си колона.
Така, ако трябва да обедините 2 листа на Google и да изтеглите идентификатори (данни от 1-ва колона) въз основа на плодове (2-ра колона), VLOOKUP няма да ви помогне. Просто няма да можете да съставите правилна формула.
В такива случаи в играта влиза INDEX MATCH за Google Sheets.
Съвпадение &; сливане на листове на Google с помощта на дуо INDEX MATCH
INDEX MATCH, или по-скоро INDEX & MATCH, всъщност са две различни функции на Google Sheets. Но когато се използват заедно, това е като следващо ниво на VLOOKUP.
Да, те също така обединяват листове на Google: актуализират клетките в една таблица със записи от друга таблица въз основа на записи с общ ключ.
Но те се справят много по-добре, тъй като пренебрегват всички ограничения, които има VLOOKUP.
Днес няма да разгледам всички основни принципи, защото това направих в тази публикация в блога. Но ще ви дам няколко примера за формулата INDEX MATCH, за да видите как работят директно в електронните таблици на Google. Ще използвам същите примерни таблици от по-горе.
INDEX MATCH в действие в Google Sheets
Първо, нека да обединим тези листове в Google и да актуализираме наличността в склада за всички съвпадащи плодове:
=INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0))
Как работи INDEX & MATCH, когато се използва заедно по този начин?
- MATCH разглежда B2 и търси абсолютно същия запис в колона B на лист 1. След като бъде намерен, той връща номера на реда, който съдържа тази стойност - 10 в моя случай.
- INDEX също отива към този 10-ти ред на лист 1, но взема стойността от друга колона - C.
Сега нека се опитаме да изпробваме INDEX MATCH срещу това, което VLOOKUP в Google Sheets не може да направи - сливане на листове и актуализиране на най-лявата колона с необходимите идентификатори:
=INDEX(Sheet1!$A$2:$A$10,MATCH(B2,Sheet1!$B$2:$B$10,0))
Лесно-лесно :)
Обработка на грешки, върнати от INDEX MATCH в Google Sheets
Нека отидем по-далеч и да се отървем от тези грешки в клетките без съвпадения. IFERROR ще помогне отново. Просто поставете вашия INDEX MATCH на Google Sheets като негов първи аргумент.
Пример 1.
=IFERROR(INDEX(Sheet1!$C$1:$C$10,MATCH(B2,Sheet1!$B$1:$B$10,0)),"")
Пример 2.
=IFERROR(INDEX(Sheet1!$A$2:$A$10,MATCH(B2,Sheet1!$B$2:$B$10,0)),"")
Сега как да обедините тези листове на Google, като използвате INDEX MATCH и актуализирате всички клетки в цялата колона наведнъж?
Ами... Не е. Има малък проблем: ArrayFormula не работи с тези две.
Ще трябва да копирате формулата INDEX MATCH в колоната или да използвате функцията QUERY на Google Sheets като алтернатива.
Сливане на листове Google & актуализиране на клетките с помощта на QUERY
Google Sheets QUERY е най-мощната функция в електронните таблици. С оглед на това не е изненадващо, че тя предлага начин за обединяване на таблици - съвпадение на & обединяване на стойности от различни листове.
=QUERY(данни, заявка, [заглавия])Съвет. Ако никога досега не сте използвали Google Sheets QUERY, това ръководство ще ви помогне да се справите с особеностите на езика.
Как трябва да изглежда формулата QUERY за актуализиране на Запаси колона с действителните данни?
=QUERY(Sheet1!$A$2:$C$10, "изберете C където&Sheet4!$B2:$B$10&"")
- Google Sheets QUERY погледне към моя лист за търсене (Sheet1 със записите, които трябва да издърпам към основната ми таблица)
- и връща всички клетки от колона C, в които колона B съвпада с плодове в основната ми таблица
Нека просто изгубя тези грешки за клетките без съвпадения:
=IFERROR(QUERY(Sheet1!$A$2:$C$10, "изберете C където&Sheet4!$B2:$B$10&""),"")
Е, това е по-добре :)
Сливане на таблици от различни електронни таблици на Google - функция IMPORTRANGE
Има още една функция, която бих искал да спомена. Тя е важна, защото ви позволява да обединявате листове, които се намират в различни електронни таблици (файлове) на Google.
Функцията се нарича IMPORTRANGE:
=IMPORTRANGE("spreadsheet_url", "range_string")- първата е връзката към тази електронна таблица, от която извличате данните.
- последният отива на лист & обхватът, който искате да вземете от тази електронна таблица
Забележка: Препоръчвам ви да разгледате документите на Google за тази функция, за да не пропуснете някой важен нюанс от работата ѝ.
Представете си, че вашият лист за търсене (с референтните данни) е в Spreadsheet 2 (наричан още lookup spreadsheet). Вашият основен лист е в Spreadsheet 1 (main spreadsheet).
Забележка. За да работи IMPORTRANGE, трябва да свържете двата файла. И макар че Google Sheet предлага бутон за това, веднага след като въведете формулата си в клетка и натиснете Въведете , за формулите по-долу може да се наложи да направите това предварително. Това ръководство стъпка по стъпка ще ви помогне.
По-долу са дадени примери за обединяване на листове на Google от различни файлове с помощта на IMPORTRANGE с всяка функция, която научихте по-рано днес.
Пример 1. IMPORTRANGE + VLOOKUP
Използвайте IMPORTRAGE като диапазон във VLOOKUP, за да обедините 2 отделни електронни таблици на Google:
=ArrayFormula(IFERROR(VLOOKUP(B2:B10,IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$B$2:$C$10"),2,FALSE),""))
Пример 2. IMPORTRANGE + INDEX MATCH
При INDEX MATCH & IMPORTRANGE формулата става по-обемна, тъй като е необходимо да се направи позоваване на друга електронна таблица два пъти: като обхват за INDEX и като обхват за MATCH:
=IFERROR(INDEX(IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$A$1:$A$10"),MATCH(B2,IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$B$2:$B$10"),0)),"")
Пример 3. IMPORTRANGE + QUERY
Този тандем от формули е моят личен фаворит. Те могат да се справят с почти всичко в електронните таблици, когато се използват заедно. Обединяването на листове на Google от отделни електронни таблици не е изключение.
=IFERROR(QUERY(IMPORTRANGE("//docs.google.com/spreadsheets/d/1Sq...j7o/edit", "Sheet1!$A$2:$C$10"), "select Col3 where&QUERY!$B2:$B$10&"""),"")
Уф!
Това е всичко за функциите & формулите.
Имате право да изберете всяка функция & създайте своя собствена формула по примерите по-горе...
или...
...опитайте специален инструмент, който обединява листове на Google вместо вас! ;)
Начин за сравняване и сливане на данни без формули - добавка за сливане на листове за Google Sheets
Ако нямате време да създавате или дори да научавате формули, или ако просто търсите най-лесния начин за обединяване на данни въз основа на общи записи, Merge Sheets ще бъде идеален.
Всичко, което трябва да направите, е да поставите отметка в квадратчетата в 5 лесни за използване стъпки:
- изберете основния си лист
- изберете лист за търсене
- маркиране на ключови колони (тези, които съдържат записи за сравнение) с квадратчета за отметка.
- изберете колони, които да актуализирате:
Има дори възможност да запазите всички избрани опции в сценарий и да го използвате отново, когато ви е необходимо:
Гледайте този 3-минутен демонстрационен видеоклип, за да видите как работи:
Препоръчвам ви да инсталирате своя Merge Sheets от магазина на Google Sheets и да следвате тези инструкции, за да опитате да актуализирате собствената си таблица с информацията от друг лист.
Електронна таблица с примери за формули
Сливане на листове на Google & актуализиране на данните - примери за формули (направете копие на файла)