2016-09-02 3 views
2

Не знаю, почему суммирование по формуле массива не возвращает правильных результатов. Формула:excel формулы sum over array

=SUM(INDEX($C$4:$C$12,TRANSPOSE(OFFSET(K17,0,0,1,COUNT(K17:S17))))) 

То, что я хочу сделать, это выбрать несколько значений из $C$4:$C$12 на основе значений в K17:S17, а затем подвести его. В строке K17:S17 может быть от 1 до 9 положительных целых чисел (от 1 до 9), которые определяют, какую строку выбрать из C4:C12.

Когда я использую только INDEX($C$4:$C$12,TRANSPOSE(OFFSET(K17,0,0,1,COUNT(K17:S17)))) в качестве функции массива, он возвращает значения, которые я хочу правильно суммировать. но добавление суммы в frot возвращает только первое значение из этого набора.

+0

Почему не '{= SUM (N (OFFSET ($ C $ 4, K17: S17-1)))} '? См. Http://stackoverflow.com/questions/38342495/sum-values-using-arrays-and-index/38343185#38343185 –

ответ

0

Для того, чтобы передать массив в качестве параметра INDEX «s row_num или col_num, требуется немного принуждения:

https://excelxor.com/2014/09/05/index-returning-an-array-of-values/

Кроме того, лучше избегать летучих OFFSET конструкции, если это возможно.

=SUM(INDEX($C$4:$C$12,N(IF({1},K17:INDEX(K17:S17,MATCH(9.9E+307,K17:S17))))))

, который, кстати, не не требуют CSE.

Edit: если максимальное значение в диапазоне K17:S17 9, мы можем заменить 9.9E+307 с 10:

=SUM(INDEX($C$4:$C$12,N(IF({1},K17:INDEX(K17:S17,MATCH(10,K17:S17))))))

С уважением