используя OFFSET с массивом столбцов, затем SUMPRODUCT - PullRequest
0 голосов
/ 02 октября 2019

У меня есть эта формула, и она отлично работает:

=OFFSET(INDIRECT(CELL("address";INDEX(INDIRECT($F6&"!C:C");MATCH($G$2;INDIRECT($F6&"!C:C");0))));0;14;1;1)

я даю ей имя листа и значение в определенном столбце на этом листе, и он возвращает число в14-й столбец перед этим целевым значением. значение в этой ячейке на самом деле является суммой 12 значений рядом с ней (12 значений за 12 месяцев года). горячая точка: ;14;1;1)

Теперь я хочу изменить формулу так, чтобы она возвращала массив из 12 значений, чтобы я мог затем представить их с другим массивом. на самом деле я хочу иметь возможность выбрать, какие месяцы будут включены в итоговую операцию. Я изменил приведенную выше формулу следующим образом:

SUMPRODUCT(OFFSET(INDIRECT(CELL("address";INDEX(INDIRECT($F6&"!C:C");MATCH($G$2;INDIRECT($F6&"!C:C");0))));0;{2;3;4;5;6;7;8;9;10;11;12;13};1;1);$E$52:$E$63)

измененная часть: SUMPRODUCT( ..... ;{2;3;4;5;6;7;8;9;10;11;12;13};1;1);$E$52:$E$63)

простое изменение, по-видимому, но оно возвращает ноль. спасибо за помощь

1 Ответ

1 голос
/ 03 октября 2019

Первый аргумент в SUMPRODUCT возвращает массив ссылок. Таким образом, вам нужно получить значения из этих ссылок путем «разыменования». Один из способов - передать массив ссылок в функцию N (). Итак, ваша формула должна выглядеть следующим образом ...

=SUMPRODUCT(N(OFFSET(INDIRECT(CELL("address",INDEX(INDIRECT("'"&$F6&"'!C:C"),MATCH($G$2,INDIRECT("'"&$F6&"'!C:C"),0)))),0,{2;3;4;5;6;7;8;9;10;11;12;13})),$E$52:$E$63)

Обратите внимание, что моя версия Excel использует запятую в качестве разделителя списка. Поэтому, скорректируйте формулу соответственно.

...