#excel
#превосходить
Вопрос:
В Microsoft Excel у меня есть именованный (2D) диапазон. Для простоты предположим, что это выглядит так:
1 | 2 | 3 | 4 | 5 | 5 | 4 | 3 | 2 | 1 |
Это представляет собой кривую роста временных рядов, где N из них может начаться в любой момент времени. Я ищу эффективный способ рассчитать, какова будет их совокупная сумма в любой момент времени, учитывая, что N начинается в этот момент времени.
Так, например, если один начинается в момент 0, один-в момент 3, а два-в момент 7:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 0 | 0 |
Тогда совокупная сумма будет равна:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 5 | 4 | 3 | 2 | 1 |
1 | 2 | 3 | 4 | 5 | 5 | 4 | |||
2 | 4 | 6 | |||||||
— | — | — | — | — | — | — | — | — | — |
1 | 2 | 3 | 5 | 7 | 8 | 8 | 10 | 11 | 11 |
Я хотел бы написать формулу, которая приведет к этой сумме без необходимости использовать эти дополнительные строки для суммирования, но не могу понять, как это сделать.
Ответ №1:
Используйте SUMPRODUCT и ИНДЕКС:
=SUMPRODUCT(INDEX($M$1:$V$1,(COLUMN()-COLUMN($A$1:A1) 1)),$A$2:A2)
Диапазоны динамичны и увеличиваются по мере его остановки.
с версиями, которые не являются Office 365, нам нужно обмануть ИНДЕКС, чтобы он принял массив:
=SUMPRODUCT(INDEX($M$1:$V$1,N(IF({1},(COLUMN()-COLUMN($A$1:A1) 1)))),$A$2:A2)
Затем это будет подтверждено с помощью Ctrl-Shift-Enter, чтобы сделать его формулой массива.