Создайте массив, добавив данные из нескольких вкладок

У меня есть вкладка данных для каждой даты в диапазоне. Я хотел бы объединить данные с каждой вкладки в один большой лист.

Название каждой вкладки выглядит так:

Jul - 06 - 2015, Jul - 07 - 2015, Jul - 08 - 2015, etc

У меня есть данные за два месяца, поэтому ~ 60 вкладок, по одной на каждый день.

Для каждой вкладки я хотел бы создать массив. Если бы я делал это вручную, я бы сделал так:

={'Jul - 06 - 2015'!A16:D;'Jul - 07 - 2015'!A16:D}

Это добавляет два дня данных, один под другим, как я хотел бы. Я бы предпочел не вводить 60 ссылок.

В каждом случае нужные мне данные находятся в формате A16:D для каждой вкладки. Объем данных меняется изо дня в день.

Могу ли я сделать что-то умное, чтобы создать новый массив со всеми моими данными, объединенными в одну большую таблицу?


person Doug Fir    schedule 18.08.2015    source источник


Ответы (1)


На мой взгляд, формула, использующая нативную функциональность (т. е. с 60 ссылками на диапазоны), всегда будет более эффективной. Вы можете использовать скрипт для создания и заполнения формулы:

function populateFormula() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheetName = ss.getActiveSheet().getName();
  var sheets = ss.getSheets();
  var ranges = [];
  sheets.forEach(function(e) {
    var sheetName = e.getName();
    if (sheetName != activeSheetName)
      ranges.push("'" + sheetName + "'!A16:D");
  });
  if (ranges.length)
    ss.getActiveRange().setFormula("={" + ranges.join(";") + "}");
}

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

person AdamL    schedule 18.08.2015
comment
Спасибо за ответ Адам. Я ждал решения формулы, например. может ли быть способ использовать косвенный() и ссылаться на группу ячеек. Например, у меня все имена ячеек записаны в длинном ряду столбцов. Если бы я мог каким-то образом дать диапазону имя, а затем сказать для каждого в диапазоне, получить A16:D - person Doug Fir; 18.08.2015
comment
Да, я понимаю, как это было бы полезно. В настоящее время итерация по диапазону ячеек невозможна с ДВССЫЛОЙ (в листах). - person AdamL; 19.08.2015