Объединение нескольких таблиц в одну с помощью importrange

Я нашел несколько тем на эту тему, ни одна из них не ответила на мой вопрос.

Проблема: я хотел бы объединить данные нескольких таблиц в одну таблицу.

  • Таблица 1 содержит ряд строк A2:A500
  • Таблица 2 имеет ряд строк A2:A500
  • Предполагается, что в Таблице 3 есть строка обоих (Таблица 1!A2:A500 И Таблица 2!A2:A500).

Дубликаты не должны обрабатываться по-разному. Я хотел бы, чтобы они появлялись так часто, как они появляются на разных листах.

Вопрос: возможно ли это сделать без написания скрипта или использования jQuery? например, с помощью IMPORTRANGE?

Что не работает: я пытался использовать IMPORTRANGE следующим образом:

ARRAY{IMPORTRANGE("key-of-spreadsheet1","list!A2:A500"), IMPORTRANGE("key-of-spreadsheet2", "list!A2:A500")}

Это вызывает ошибку.

Спасибо за помощь.

2 ответа

Решение

Вы должны быть в состоянии использовать вертикальный массив в электронной таблице 3:

={IMPORTRANGE("Sheet1Key","SheetName!A2:A500");IMPORTRANGE("Sheet2Key","SheetName!A2:A500")}

Конечно, можно также комбинировать несколькоIMPORTRANGE() функции с QUERY()функция, которая дает нам больший контроль над импортируемыми результатами.

Например, мы можем использовать такую ​​конструкцию:

=QUERY(
  {
    IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-2", "'sheet-name-2'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-3", "'sheet-name-3'!A2:Z100");
    IMPORTRANGE("key-or-url-of-spreadsheet-4", "'sheet-name-4'!A2:Z100")
  },
  "SELECT * WHERE Col1 IS NOT NULL ORDER BY Col3 ASC"
)

Пояснение:

Приведенный выше запрос удаляет пустые строки из импортированных диапазонов:

SELECT * WHERE Col1 IS NOT NULL

и сортирует все собранные вместе данные по возрастанию относительно третьего столбца:

ORDER BY Col3 ASC

Для спуска просто используйте DESC на месте ASC.

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

"SELECT * "

Примечание:

Чтобы использовать построенный выше запрос, нам сначала нужно вызвать один IMPORTIMAGE()метод для каждой электронной таблицы, на которую мы хотим ссылаться:

=IMPORTRANGE("key-or-url-of-spreadsheet-1", "'sheet-name-1'!A2:Z100")

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

Это нужно для того, чтобы можно было соединить эти листы и разрешить доступ к листам (к которым у нас все равно есть права доступа):

                                                    

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

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

Если исходные листы имеют одинаковый формат (одинаковые заголовки столбцов), вы можете использовать функцию консолидации дополнительного листа Sheetgo для листов Google, чтобы объединить несколько исходных листов в один лист назначения. См. Этот пост в блоге для получения дополнительной информации: https://www.sheetgo.com/consolidate-google-sheets/

Простое исправление: примените фильтр ко всему столбцу / листу, а не только к текущему выделению. Это автоматически обновит все фильтры, чтобы включить новые дополнения.