Мне нужно передать список с несколькими критериями (постоянный массив) через ссылку на ячейку, а не вводить его жестко в формулу.
Итак, вместо этого:
=SUM(SUMIFS(sum_range,criteria_range,{"red","blue"}))
Но мне нужно было бы использовать это: =SUM(SUMIFS(sum_range,criteria_range,$A1)), где $ A1 - {"red","blue"}

Я понимаю, что для передачи массива можно использовать диапазон ячеек, но мне действительно нужно, чтобы мое условие исходило из одной ячейки.
Кажется, что при передаче постоянного массива через ссылку на ячейку в формулу передается только первый элемент (т.е. в качестве условия используется только «красный») и все рабочие примеры, которые я смог найти для этого (здесь или здесь) жестко вводят условие в формулу.

Кому-нибудь повезло?

РЕДАКТИРОВАТЬ: я должен добавить, что мой набор данных включает пустые строки, поэтому он не является непрерывным, и в целом я ищу не слишком запутанное решение, которое будет работать большую часть времени и с минимальными ограничениями и предостережениями, насколько это возможно.

1
YeO 13 Мар 2018 в 23:34

2 ответа

Лучший ответ

С ячейкой A1, содержащей {"red","blue"}, я затем настраиваю именованный диапазон Condition, которому я назначил =EVALUATE($A1), и теперь я могу передать свое условие следующим образом:
=SUM(SUMIFS(W$12:W$448,$I$12:$I$448,$I474,$J$12:$J$448,$J474,$K$12:$K$448,Condition))

0
YeO 14 Мар 2018 в 16:25

Измените «Массив» в A1 на список, разделенный запятыми:

blue,purple

Нет кавычек или {}

Измените СУММ на СУММПРОИЗВ и используйте это как критерий:

TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))

$20 следует разместить на максимально возможном количестве вариантов. Я просто использовал это здесь как заполнитель, это может быть больше без проблем, но не меньше, иначе он пропустит что-то большее.

enter image description here


На основе предоставленной вами формулы.

=SUMPRODUCT(SUMIFS(W$12:W$448,$I$12:$I$448,$I474,$J$12:$J$448,$J474,$K$12:$K$448,TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW(INDEX(AAA:AAA,1):INDEX(AAA:AAA,LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1))-1)*99+1,99))))
3
Scott Craner 13 Мар 2018 в 21:45