СУММЕСЛИМН: как записать имена столбцов в виде формулы при указании диапазона?

В таблице есть столбцы от B до Z. Я хочу суммировать столбец, который содержит «15 марта» в качестве заголовка, при условии, что значение столбца A больше или равно «15 марта».

Итак, если у меня есть следующее в Sheet1 -

     A       B       C       D       E
1          Mar-15   Apr-15  May-15  Jun-15
2 Feb-15    1       2       3       4
3 Mar-15    100     200     300     400
4 Apr-15    1000    2000    3000    4000
5 May-15    10000   20000   30000   40000

И у меня есть следующее в столбцах Y и Z -

    Y       Z
1 Month    Value
2 Mar-15    ?

Я хочу иметь возможность написать формулу в Z2, которая суммирует значения в столбце, заголовок которого равен Y2, а столбец A больше или равен Y2. Итак, здесь требуемый ответ для формулы будет 1110, так как Y2 содержит Mar-15.

Чтобы было понятнее, если Y2 содержит Apr-15, то результат в Z2 должен быть 22000.

Теперь у меня есть формула

=MATCH(Y2,$1:$1,0)

что дает мне 2, который является индексом столбца в первой строке, который соответствует значению в Y2.

Затем я изменяю его, чтобы получить адрес заголовка -

=ADDRESS(1,MATCH(Y2,$1:$1,0))

Это дает мне $B$1. Чтобы получить только столбец, я делаю =LEFT(ADDRESS(1,MATCH(Y2,$1:$1,0)),2), что дает мне $B

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

=SUMIFS(<something>,A:A,">="&Y2)

Каким должно быть что-то? В зависимости от значения в Y2 столбец, который я хочу суммировать, может быть другим. Итак, какую формулу мне вставить вместо что-то?

Я попробовал LEFT(ADDRESS(1,MATCH(Y2,$1:$1,0)),2):LEFT(ADDRESS(1,MATCH(Y2,$1:$1,0)),2), так как LEFT(ADDRESS(1,MATCH(Y2,$1:$1,0)),2) дает мне $B, и я предполагал, что эта формула даст мне $B:$B, но это не работает.


person user3164272    schedule 22.11.2015    source источник


Ответы (2)


Строка или столбец могут быть «склеены» из прямоугольной матрицы с помощью Функция ИНДЕКС. , 0, или пустой параметр (например, , ,) используется для обозначения всех ячеек в противоположном параметре. В этом случае 0 будет означать все строки в выбранном столбце.

sumif_index

Формула в Z2 может быть любой из этих,

=SUMIF(A:A, ">="&Y2, INDEX(B:E, 0, MATCH(Y2, B$1:E$1, 0)))
=SUMIFS(INDEX(B:E, 0, MATCH(Y2, B$1:E$1, 0)),A:A, ">="&Y2)

Если у вас есть дополнительные значения в Y3 и т. д., заполните их по мере необходимости.

person Community    schedule 22.11.2015
comment
Это именно то, что я искал! Я играл с функцией ИНДЕКС, но не мог понять ее так, как вы. Благодаря тонну! Работает как часы :) - person user3164272; 22.11.2015

Попробуйте эту формулу

=SUMPRODUCT(--(A2:A200>=Y2),INDEX(B2:E200,0,MATCH(Y2,B1:E1,0)))

Он использует ПОИСКПОЗ, чтобы найти, какой столбец искать в диапазоне B2:E200 (0 означает все строки в этом выбранном столбце). Тест A2:A200>=Y2 проверяет первый столбец, как вы указали, -- изменяет совпадение с 1, промахивается с 0, а SUMPRODUCT затем умножает эти 1/09 на значения выбранного столбца, чтобы получить результат.

Если вам нужна дополнительная информация, см. здесь

person Bob Phillips    schedule 22.11.2015
comment
Почему СУММПРОИЗВ вместо СУММЕСЛИ? - person ; 22.11.2015