Вы получаете #DIV/0!
, потому что знаменатель вашего деления может быть нулевым и формулирует «короткое замыкание» при первой необработанной ошибке.Если в какой-либо строке результат равен нулю, то
COUNTIFS(EncounterDate, "<="&DU4, EncounterDate, ">="&DT4, EncLastFirstName, EncLastFirstName, CMService, "S")
... тогда вы получите #DIV/0!
с 1/COUNTIFS(...)
.
Мое решение состоит в том, чтобы удалить часть IF и собратькаждый критерий в числитель, который разрешается как 1, если все верно, и 0, если есть ложь.Кроме того, добавьте обратный числитель критериев к знаменателю операции деления;например, если в числителе (CMService="S")
, то добавьте (CMService<>"S")
к знаменателю.В этих случаях знаменатель будет отличен от нуля, а числитель будет равен нулю.Ноль, деленный на что-либо, по-прежнему равен нулю (например, 0/100 == 0), поэтому не имеет значения, что является знаменателем, и вы никогда не получите ошибку #DIV/0!
.
Если все условия в числителе и индикаторах верны, числитель равен 1, и к знаменателю ничего не добавлено.Если какие-либо условия в числителе и индикаторах неверны, числитель равен 0, и в знаменатель добавлено что-то, чтобы не происходило #DIV/0!
.
В DV4 в качестве стандартной формулы без CSE,
[<~~~~~~~~~~~~~~~~~ numerator portion ~~~~~~~~~~~~~~~~~>] / [<~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ denominator portion ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>]+[<~~~~~~~~~~ denominator adjustment portion ~~~~~~~~~~>]
=sumproduct(((EncounterDate>=DT4)*(EncounterDate<=DU4)*(CMService="S"))/(countifs(EncLastFirstName, EncLastFirstName, EncounterDate, ">="&DT4, EncounterDate, "<="&DU4, CMService, "S")+(EncounterDate<DT4)+(EncounterDate>DU4)+(CMService<>"S")))
С помощью этого метода отмены любых #DIV/0!
с базовыми математическими вычислениями вы можете увеличивать или уменьшать количество критериев до тех пор, пока вы сохраняете настройку знаменателя равной обратномучислитель.
Кстати, ожидаемые результаты по вашему вопросу неверны.