Excel возвращает sumproduct != integer, что вызывает проблемы с if и sumifs

Я не могу расшифровать, что происходит в моем листе Excel. Похоже, что результатом функции суммирования является число, но это значение не ведет себя как число в последующей формуле суммирования.

Чтобы быть более конкретным:

Я использую формулу на основе =sumproduct, чтобы ранжировать значения, введенные в столбце =СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73,P$19:P$73)), я использую это потому что =rank.eq не возвращает последовательные числа (что важно в других местах).

Позже я использую sumif, чтобы собрать все эти значения с одинаковым рангом в сумму. Сумматор возвращает правильный результат для 25 столбцов, но для 26-го столбца он возвращает 0. Бывает, что все остальные столбцы имеют 5 рангов (1-5) и, следовательно, количество элементов, которое делится на 5.

Для 26-го столбца сумма возвращает = 0 =СУММЕСЛИ($AD$19:$AD$73,=&AO$20,$X$19:$X$73)/СУММЕСЛИ($AD$19:$AD$73,=&AO$20,$Y$19) :$Y$73)

При проверке результата =СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73,P$19:P$73)) с типом результат равен 1 (число). Когда ячейка отображает 6, =int(6) возвращает значение 5 (не 6). Я попытался решить проблему с помощью =abs(СУММПРОИЗВ((P19‹=P$19:P$73)/COUNTIF(P$19:P$73,P$19:P$73))) это не решило проблему.

При проверке результата: =СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73,P$19:P$73)) → 6 (даже 6,000000000000 в формате числа)

=abs(СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73,P$19:P$73))) возвращает число 6 (даже 6.000000000000 в формате числа)

но =int(СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73,P$19:P$73))) возвращает число 5

=округление(СУММПРОИЗВ((P19‹=P$19:P$73)/СЧЁТЕСЛИ(P$19:P$73;P$19:P$73))),1) возвращает число 6

Поскольку типом является «число», а =abs() не имеет эффекта, кажется очевидным, что отображаемое значение близко к 6 для excel. Тем не менее, для =if() и =sumif() и =int() очевидно, что это не 6.

Может ли кто-нибудь просветить меня, что здесь происходит? Использование =roundup(...,1) заставило лист работать, но это не очень элегантно.


person HS JDN    schedule 21.12.2020    source источник
comment
Кажется, что полученное вами число немного меньше 6. Вы можете проверить, правда ли это, с помощью =(SUMPRODUCT((P19<=P$19:P$73)/COUNTIF(P$19:P$73,P$19:P$73))<6).   -  person Xaver    schedule 21.12.2020
comment
это ошибка с плавающей запятой. Это хорошо документировано, и вам нужно будет использовать раунд, чтобы исправить это.   -  person Scott Craner    schedule 21.12.2020
comment
см.: stackoverflow.com/questions/36452194/   -  person Scott Craner    schedule 21.12.2020
comment
и: stackoverflow.com/questions/28324169/   -  person Scott Craner    schedule 21.12.2020