Слияние 2 листов Google и обновление данных на основе общих записей

  • Поделись Этим
Michael Brown

В сегодняшней статье мы рассмотрим все способы объединения двух Google Sheets. Вы будете использовать VLOOKUP, INDEX/MATCH, QUERY и дополнение Merge Sheets для обновления ячеек одного листа записями из другого на основе совпадений в общих столбцах.

    Объединение листов Google с помощью функции VLOOKUP

    Первое, к чему вы можете обратиться, когда вам нужно сопоставить и объединить два листа Google, - это функция VLOOKUP.

    Синтаксис и использование

    Эта функция ищет в указанном вами столбце определенное ключевое значение и извлекает одну из связанных записей из той же строки в другую таблицу или лист.

    Хотя VLOOKUP в Google Sheets обычно считается одной из сложных функций, на самом деле она довольно проста и даже легка, как только вы ее освоите.

    Давайте вкратце рассмотрим его компоненты:

    =VLOOKUP(search_key, range, index, [is_sorted])
    • ключ_поиска это ключевое значение, которое вы ищете. Это может быть любая текстовая строка, число или ссылка на ячейку.
    • ассортимент это та группа ячеек (или таблица), в которой вы будете искать ключ_поиска и откуда вы будете извлекать связанные записи.

      Примечание. VLOOKUP в Google Sheets всегда сканирует первый столбец таблицы ассортимент для ключ_поиска .

    • индекс это номер столбца в пределах данного ассортимент откуда вы хотите взять данные.

      Например, если ваш диапазон для поиска A2:E20 и вам нужно получить данные из столбца E, введите 5. Но если ваш диапазон D2:E20, вам нужно ввести 2, чтобы получить записи из столбца E.

    • [is_sorted]. единственный аргумент, который можно опустить. Он используется для того, чтобы сказать, отсортирован ли столбец с ключевыми значениями (TRUE) или нет (FALSE). Если TRUE, то функция будет работать с ближайшим соответствием, если FALSE - с полным. Если аргумент опущен, то по умолчанию используется TRUE.

    Совет. У нас есть подробное руководство, посвященное VLOOKUP в Google Sheets. Пожалуйста, ознакомьтесь с ним, чтобы узнать больше об этой функции, ее особенностях & ограничениях, а также получить больше примеров формул.

    Учитывая эти аргументы, давайте используем VLOOKUP для объединения двух листов Google.

    Предположим, у меня есть небольшая таблица с ягодами и их идентификаторами в Sheet2. Однако наличие запасов неизвестно:

    Назовем эту таблицу главной, поскольку моя цель - заполнить ее.

    В Sheet1 есть еще одна таблица со всеми данными, включая наличие на складе:

    Я буду называть ее таблицей поиска, поскольку я буду заглядывать в нее, чтобы получить данные.

    Я буду использовать функцию Google Sheets VLOOKUP для объединения этих двух листов. Функция будет сопоставлять ягоды в обеих таблицах и вытаскивать соответствующую информацию о "запасах" из поиска в основную таблицу.

    =VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE)

    Вот как эта формула точно объединяет два листа Google:

    1. Он ищет значение из B2 (основной лист) в столбце B на Листе1 (лист поиска).

      Примечание. Помните, что VLOOKUP сканирует 1-й столбец указанного диапазона. Лист1!$B$2:$C$10 .

      Примечание. Я использую абсолютные ссылки для диапазона, потому что я копирую формулу вниз по столбцу и, следовательно, мне нужно, чтобы этот диапазон оставался одинаковым в каждой строке, чтобы результат не нарушался.

    2. FALSE в конце говорит, что данные в столбце B (в листе поиска) не отсортированы, поэтому будут рассматриваться только точные совпадения.
    3. Если есть совпадение, Google Sheets VLOOKUP извлекает связанную запись из второго столбца этого диапазона (столбец C).

    Скрыть ошибки, возвращаемые VLOOKUP в Google Sheets - IFERROR

    Но как быть с ошибками #N/A?

    Вы видите их в тех строках, где у ягод нет совпадений в другом листе, и возвращать нечего. К счастью, есть способ оставить такие ячейки пустыми.

    Просто оберните ваш Google Sheets VLOOKUP в IFERROR:

    =IFERROR(VLOOKUP(B2,Sheet1!$B$2:$C$10,2,FALSE),"")

    Совет. Отлавливайте и исправляйте другие ошибки, которые может выдать ваш Google Sheets VLOOKUP, используя решения из этого руководства.

    Match & обновление записей для всего столбца сразу - 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 и вытащить идентификаторы (данные первого столбца) на основе ягод (второй столбец), 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 при таком совместном использовании?

    1. MATCH смотрит на B2 и ищет точно такую же запись в столбце B на Листе1. Когда она найдена, возвращается номер строки, содержащей это значение - 10 в моем случае.
    2. 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 в столбец или использовать функцию Google Sheets QUERY в качестве альтернативы.

    Слияние листов Google & обновление ячеек с помощью QUERY

    Google Sheets QUERY - это самая мощная функция в электронных таблицах. Учитывая это, неудивительно, что она предлагает способ как бы объединить таблицы - сопоставить & объединить значения из разных листов.

    =QUERY(data, query, [headers])

    Совет. Если вы никогда раньше не пользовались Google Sheets QUERY, этот учебник поможет вам разобраться с его своеобразным языком.

    Как должна выглядеть формула QUERY для обновления файла Акции столбца с фактическими данными?

    =QUERY(Sheet1!$A$2:$C$10, "select C where&Sheet4!$B2:$B$10&""")

    • Google Sheets QUERY смотрит на мой лист поиска (Sheet1 с записями, которые мне нужно вытащить в основную таблицу)
    • и возвращает все те ячейки из столбца C, где столбец B совпадает с ягодами в моей основной таблице

    Позвольте мне просто потерять эти ошибки для ячеек без совпадений:

    =IFERROR(QUERY(Sheet1!$A$2:$C$10, "select C where&Sheet4!$B2:$B$10&""),"").

    Ну, так-то лучше :)

    Слияние таблиц из разных электронных таблиц Google - функция IMPORTRANGE

    Есть еще одна функция, о которой я хотел бы упомянуть. Она важна, поскольку позволяет объединять листы, находящиеся в разных электронных таблицах (файлах) Google.

    Функция называется IMPORTRANGE:

    =IMPORTRANGE("spreadsheet_url", "range_string")
    • в первом - ссылка на электронную таблицу, из которой вы берете данные.
    • последним идет лист & диапазон, который вы хотите взять из этой электронной таблицы

    Примечание. Я настоятельно рекомендую просмотреть Google-документы по этой функции, чтобы не упустить ни одного важного нюанса ее работы.

    Представьте, что ваш лист поиска (со справочными данными) находится в электронном листе 2 (он же лист поиска). Ваш основной лист находится в электронном листе 1 (основной лист).

    Примечание. Чтобы IMPORTRANGE работал, необходимо подключить оба файла. И хотя Google Sheet предлагает кнопку для этого сразу после ввода формулы в ячейку и нажатия кнопки Войти Для формул, приведенных ниже, вам может понадобиться сделать это заранее. Это пошаговое руководство поможет вам.

    Ниже приведены примеры объединения листов Google из разных файлов с помощью IMPORTRANGE с каждой из функций, которые вы изучили сегодня.

    Пример 1. IMPORTRANGE + VLOOKUP

    Используйте IMPORTRAGE в качестве диапазона в VLOOKUP для объединения двух отдельных электронных таблиц 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 за вас! ;)

    Бесформульный способ сопоставления и слияния данных - дополнение Merge Sheets для Google Sheets

    Если у вас нет времени на создание или даже изучение формул, или если вы просто ищете самый простой способ объединения данных на основе общих записей, Merge Sheets будет идеальным решением.

    Все, что вам нужно сделать, - это поставить галочки в 5 удобных для пользователя шагах:

    1. выберите основной лист
    2. выберите таблицу поиска
    3. отметить ключевые столбцы (те, которые содержат записи для сопоставления) флажками
    4. выберите столбцы для обновления:

  • настраивать дополнительные опции, например, отмечать обновленные записи цветом или в колонке статуса и т.д.
  • Есть даже возможность сохранить все выбранные варианты в сценарий и использовать его повторно, когда понадобится:

    Посмотрите 3-минутный демонстрационный ролик, чтобы увидеть, как это работает:

    Я рекомендую вам установить таблицу Merge Sheets из магазина Google Sheets и, следуя этим инструкциям, попробовать обновить собственную таблицу информацией из другого листа.

    Электронная таблица с примерами формул

    Слияние листов Google & обновление данных - примеры формул (сделайте копию файла)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.