Поэтому я пытаюсь найти альтернативу sumifs в excel, где каждое условие необходимо проверять в двухмерном диапазоне, а не в одномерном.
Например, в приведенной ниже таблице я хочу получить сумму значений в столбце V для строк, где A12 («IJ») присутствует в диапазоне A2: C8 (P), B12 («NM») присутствует в диапазоне D2: F8 (S) и C12 ("XX") присутствуют в диапазоне G2: I8 (A)
Я пытаюсь найти решение, включающее формулу на основе массива (без VBA). Как, например, в приведенных ниже формулах, SUMPRODUCT((B2:B8'=A12)*J2:J8)
даст вычисление на основе массива следующим образом:
SUMPRODUCT({TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE}*{22;79;45;67;43;72;52})
= SUMPRODUCT({22;0;45;0;0;72;0})
=139
Легко, когда нужно проверить только одно условие, но, как и sumifs, я намерен чтобы проверить несколько условий, но как только я добавлю другие условия, массив станет многомерным и даст неправильный ответ.
Пример:
SUMPRODUCT((A2:C8=A12)*(D2:F8=B12)*J2:J8)
разбивается на
=SUMPRODUCT(
{FALSE,TRUE,FALSE;FALSE,FALSE,FALSE;FALSE,TRUE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,TRUE,FALSE;FALSE,FALSE,FALSE}*
{TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;TRUE,FALSE,FALSE;FALSE,FALSE,FALSE;FALSE,FALSE,FALSE;TRUE,FALSE,FALSE;FALSE,FALSE,FALSE}
*J2:J8)
в фоновом режиме, что происходит (пример для 3-й строки)
SUMPRODUCT( ({FALSE, TRUE ,FALSE} * {TRUE,FALSE,FALSE}) * 45 )
= SUMPRODUCT({FALSE,FALSE,FALSE} *45 )
=0
SUMPRODUCT(({FALSE,TRUE ,FALSE} + {TRUE,FALSE,FALSE}) * 45 )
= SUMPRODUCT({TRUE,TRUE,FALSE} *45 )
= 90
#expected answer =45
Может ли кто-нибудь помочь мне понять, где я иду не так или чего мне не хватает?
Если есть какой-либо другой способ, то предложения всегда приветствуются.
Обратите внимание, что это фиктивные данные. Фактические данные очень велики для каждого заголовка (P, S, A). Значения находятся в 10 столбцах соответственно, а количество строк также очень велико.