Получить значение одной и той же ячейки из нескольких листов - PullRequest
0 голосов
/ 17 июня 2020

Я хочу получить значение ячейки A1 из нескольких вкладок на моем листе. Я попытался использовать INDIRECT, только чтобы напомнить, что это не сработает в ARRAYFORMULA. Есть ли какая-то «импровизированная» формула, которая будет делать то же самое?

Это то, что я изначально пытался:

 =ArrayFormula(IF(LEN(A2:A),INDIRECT(A2:A&"!A1"),))

Столбец A представляет собой список выбора имен вкладок в моем простынь. Итак, первый экземпляр работает, но, конечно, он не заполняет столбец, как я надеялся. Я понимаю, что могу просто скопировать формулу в столбец, но какой-то тип ARRAYFORMULA был бы идеальным, когда я добавляю строки в список.

Я нашел этот ответ , но не Не понимаю, как я могу применить это к моей ситуации.

Я также нашел этот ответ , но подумал, поскольку ему 2,5 года, может быть, кто-то нашел умный способ избежать перетащите копирования.

1 Ответ

0 голосов
/ 17 июня 2020

Ответ:

Это необходимо сделать с помощью сценария или с помощью метода перетаскивания - INDIRECT использует ссылку на строку и поэтому не может использоваться с массивом.

Дополнительная информация:

К сожалению для пользователя INDIRECT с ARRAYFORMULA, обнаружение умного метода не является проблемой - ограничение того, что можно сделать только с формулами это root этой проблемы.

Настройка пользовательской функции:

Из пункта меню «Инструменты»> «Редактор скриптов» вы можете создавать скрипты. Пример настраиваемой формулы, которую вы могли бы использовать, будет выглядеть следующим образом:

function ARRAYINDIRECT(input) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  return input.reduce(function(array, el) {
    if (el[0]) array.push(el[0])
    return array;
  }, []).map(x => ss.getSheetByName(x).getRange("A1").getValue());
}

Обязательно сохраните скрипт со значком сохранения.

Затем вы можете вызвать эту настраиваемую формулу на своем листе. так:

=ARRAYINDIRECT(A2:A)

Повторный цикл функции:

  • Принимает входной диапазон, откуда вызывается формула - в данном случае A2:A
  • Уменьшает ввод, чтобы удалить все пустые ячейки
  • Сопоставляет имя листа, которое хранится в ячейке, со значением в A1 листа, на который он ссылается
  • Возвращает массив для вывода

Надеюсь, это будет вам полезно!

Ссылки:

...