Почему ArrayFormula вызывает пустое значение "" для регистрации> 0 - PullRequest
1 голос
/ 06 ноября 2019

Ссылка на образец листа: https://docs.google.com/spreadsheets/d/16huMKzeqbg3gho5klvRj91878H1ZARIs4F9RVRwE9M0

Вкладка: неделя 45-48

У меня установлена ​​эта формула массива для извлечения данных о сумме в $ из другой вкладки:

Ячейка F42:

=IFERROR(IF(value(F4) = value(Settings!$B$26),ArrayFormula(INDEX(FullReport!$A:$A,SMALL(IF("Labour Cost"=FullReport!$A:$A,ROW(FullReport!$A:$A)+1),1))),""),0)

Оставляет пустое поле, если значение пустое. У меня есть другая формула для чтения этих данных, если значение больше $ 0,00

Ячейка D38:

=SUM(((IF(C42 > 0, C42,C41)) + (IF(D42 > 0, D42,D41)) + (IF(E42 > 0, E42,E41)) + (IF(F42 > 0, F42,F41)) + (IF(G42 > 0, G42,G41)) + (IF(H42 > 0, H42,H41)) + (IF(I42 > 0, I42,I41))))+B39

К сожалению, кажется, что генерируется пустое поле ""в ячейке F42 заставляет ячейку D38 регистрироваться как значение, превышающее 0,00 долл. США, и отбрасывает ожидаемые результаты.

Ищите способ обойти это, спасибо за любую помощь.

1 Ответ

1 голос
/ 06 ноября 2019

если вы запустите =IF(F42 > 0, F42, F41), то результат будет пустой ячейкой, поэтому все проблемы с формулой массива следует отбросить.

, с другой стороны, есть =IF(D42 > 0, D42, D41), что приводит к FALSE, поэтому ваш SUM суммируются 4 значения: B39 + C41 + D41 + E41 , что приводит к $5,571.08 (см. Красную таблицу)

0

если вы ожидаете, что сумма исключит D41 значение, по которому ваша IF формула должна быть:

=IF((D42=0)+(D42=""), D42, D41) 

знак + действует как OR


или вы можете просто использовать:

=ARRAYFORMULA(SUMPRODUCT(IF(C42:I42*1>0, C41:I41, C42:I42)))+B39

0

...