У меня есть массив с несколькими столбцами, которые являются диапазонами разлива. Мне нужно использовать каждый столбец для выполнения многоусловного поиска x (или аналогичной формулы/результата), который дает диапазон результатов. Я использовал sumifs для получения результатов, но когда ячейка пуста, я бы хотел, чтобы она оставалась пустой, где результаты sumifs дают 0%, когда ячейка пуста.
Реальное применение этого будет помещено в формулу LET, и каждый из выходов в xlookup будет результатом выбора столбцов.
=XLOOKUP(1,($C$3#=$C$12:$C$15)*($D$3#=D12:D15),$E$12:$E$15,"",0)
=SUMIFS($E$12:$E$15,$C$12:$C$15,C3#,$D$12:$D$15,D3#)
На изображении границы обозначают массив разливов. Ожидаемые результаты вводятся вручную.
Вы можете попробовать использовать следующую формулу:
=MAP(C3#,D3#,LAMBDA(α,δ,
XLOOKUP(1,(α=C12:C15)*(δ=D12:D15),
IF(E12:E15 = "","",E12:E15),"")))
Или,
=LET(a, E12:E15, IF(a = "","",SUMIFS(a,C3#,C12:C15,D3#,D12:D15)))
Или,
=LET(
a, FILTER(E12:E15,COUNTIFS(C3#,C12:C15,D3#,D12:D15)),
IF(a = "","",a))
Или,
=XLOOKUP(C3#&"|"&D3#,C12:C15&"|"&D12:D15,IF(E12:E15 = "","",E12:E15))
А что насчет этого: =LET( a, FILTER(E12:E15,COUNTIFS(C3#,C12:C15,D3#,D12:D15)), IF(a=0,"",a))
Логика заключается не в том, что если это 0, оставьте его пустым, а мы хотим отобразить настоящий 0. Если он пуст, мы хотим, чтобы он оставался пустым.
Попалось: =IF(E12:E15 = "","",SUMIFS(E12:E15,C3#,C12:C15,D3#,D12:D15))
просто измените 0
на ""
Имеет ли для этого значение сортировка? Например, если используется сводка и я извлекаю значения из несортированного набора данных, не окажутся ли эти пробелы в неправильных позициях?
После тестирования кажется, что местоположение остается пустым независимо от совпадения.
Я не думаю, что сортировка здесь должна иметь значение. Поскольку вам нужен вывод, чтобы те, которые являются пробелами, оставались пустыми, а тот, у которого 0, отображался как 0, поэтому сортировка здесь не будет действовать.
Я имею в виду, что если нижний массив останется как есть, но верхний массив будет использован, останется ли пробел в своем абсолютном положении или приспособится к тому месту, где он должен быть? Судя по тому, что я видел, казалось, что он оставался на своем абсолютном месте, независимо от того, что бы ни потянули сумифы.
Я не нашел никакой разницы, все работает как есть.
Итак, я переделал свой пример и вижу, что результаты неверны с использованием логики IF( [range] = ""
. Если пробел представляет собой абсолютную позицию, в которой используется сводка, а результаты также не отображают правильные значения. Я пока буду придерживаться карты
Сработает ли это, Марк?
=IF(LEN(TRIM($E$12#)), SUMIFS($E$12#,$C$12#,C3#,$D$12#,D3#),"")
Или
Формула карты сработала, хотя производительность моего приложения довольно низкая.