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