Мне нужно передать список с несколькими критериями (постоянный массив) через ссылку на ячейку, а не вводить его жестко в формулу.
Итак, вместо этого:
=SUM(SUMIFS(sum_range,criteria_range,{"red","blue"}))
Но мне нужно было бы использовать это: =SUM(SUMIFS(sum_range,criteria_range,$A1))
, где $ A1 - {"red","blue"}
Я понимаю, что для передачи массива можно использовать диапазон ячеек, но мне действительно нужно, чтобы мое условие исходило из одной ячейки.
Кажется, что при передаче постоянного массива через ссылку на ячейку в формулу передается только первый элемент (т.е. в качестве условия используется только «красный») и все рабочие примеры, которые я смог найти для этого (здесь или здесь) жестко вводят условие в формулу.
Кому-нибудь повезло?
РЕДАКТИРОВАТЬ: я должен добавить, что мой набор данных включает пустые строки, поэтому он не является непрерывным, и в целом я ищу не слишком запутанное решение, которое будет работать большую часть времени и с минимальными ограничениями и предостережениями, насколько это возможно.
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))
Измените «Массив» в 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
следует разместить на максимально возможном количестве вариантов. Я просто использовал это здесь как заполнитель, это может быть больше без проблем, но не меньше, иначе он пропустит что-то большее.
На основе предоставленной вами формулы.
=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))))
Похожие вопросы
Новые вопросы
arrays
Массив - это упорядоченная линейная структура данных, состоящая из набора элементов (значений, переменных или ссылок), каждый из которых идентифицируется одним или несколькими индексами. Когда вы спрашиваете о конкретных вариантах массивов, используйте вместо них следующие связанные теги: [vector], [arraylist], [matrix]. При использовании этого тега в вопросе, относящемся к языку программирования, пометьте вопрос используемым языком программирования.