Регресс с COUNTIFS() ?

Автор eeigor, 5 мая 2022, 10:56

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Win10
LO 7.3.2.2
Обновился до указанной версии на работе, и перестала работать формула. Заменил на SUMPRODUCT(), поправил синтаксис – работоспособность восстановлена.
COUNTIFS() не работает частично, а именно: когда условий больше одного (у меня 2), и во втором – сравнение с пустой строкой.
Например:
=COUNTIFS($D7:$D84;"<>";$I7:$I84;"")

Просьба проверить.
Если сократить условия до одного второго, то то же сравнение с пустой строкой работает.

Замена:
=SUMPRODUCT($D7:$D84<>"";$I7:$I84="")
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

#1
Работает нормально на Version: 7.3.3.1 (x64) / LibreOffice Community
Build ID: 1688991ca59a3ca1c74bc2176b274fba1b034928
CPU threads: 12; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: ru-RU (ru_RU); UI: en-US
Calc: CL

А что выбрано в Options|Calc|Calculate|Search criteria = and <> must apply to whole cells?

Цитата: eeigor от  5 мая 2022, 10:56LO 7.3.2.2
Обновился до указанной версии на работе

Хм. "7.3" и "на работе" не очень вяжется ;)

ЦитироватьIf you're a technology enthusiast, early adopter or power user, this version is for you!

И кстати: "обновился" с какой версии?
И вообще: что значит "перестала работать"? Ошибка? Считает неправильно? как (не учитывает нужное или учитывает ненужное)? на каких данных?
С уважением,
Михаил Каганский

eeigor

#2
Дома Linux.
Обновился примерно с 7.0...
Флажок "поиск распространяется на всю ячейку" снят.
Ноль выдаёт. Но здесь сравнение идёт со всей ячейкой, поэтому неважно.

Edit:
На каких данных:
В первом условии диапазон строк, во втором формула, возвращающая целое число или "".
Попробуйте в примере выше заменить значения в столбце B на формулу, возвращающую 1 или "".
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#3
В вашем примере у меня всё работает тоже. Заменил на формулу в столбце B для пустых ячеек:
B3, B6:B7: =""
И формула в ячейке A1 вернула 0, у меня во всяком случае. А SUMPRODUCT() вернёт 3. Это и был мой вопрос.

Значит, проблема с обработкой не пустых ячеек, а пустых строк, возвращённых формулой. Да, если первое условие убрать, то тоже не работает. Вот так у меня много итоговых формул вдруг вернули нолики после обновления. Положения спасла SUMPRODUCT().

Edit:
Измените условие в формуле с "" на "<>", и COUNTIFS() вернёт 5 для всех ячеек, так как значение в ячейках ="" трактуется как непустое.
Вывод: нарушена интерпретация пустых ячеек.

Так тоже работает:
{=SUM(($A$3:$A$7<>"")*($B$3:$B$7=""))}
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

С уважением,
Михаил Каганский

eeigor

Михаил, использовал Ваш пример в ответе #1. На работе нет возможности выйти в сеть. Только телефон. Ответьте за свой пример с моим дополнением в виде =""
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

Цитата: eeigor от  5 мая 2022, 11:46Edit:
Измените условие в формуле с "" на "<>", и COUNTIFS() вернёт 5 для всех ячеек, так как значение в ячейках ="" трактуется как непустое.
Вывод: нарушена интерпретация пустых ячеек.
Вывод неверен.
Цитата: OASIS ODF 1.3 part 4 sect. 4.11.8 CriterionFor <>, if the value is empty it matches non-empty cells.
Цитата: OASIS ODF 1.3 part 4 sect. 4.7 Empty CellAn empty cell is neither zero nor the empty string, and an empty cell can be distinguished from cells containing values (including zero and the empty string). An empty cell is not the same as an Error, in particular, it is distinguishable from the Error #N/A (not available).

Правильный вывод: исправлена интерпретация пустых ячеек.
С уважением,
Михаил Каганский

eeigor

Согласен. Спасибо. Теперь другие функции интерпретируют иначе. С этим, полагаю, столкнутся многие. Я-то быстро нашёл замену...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

Цитата: eeigor от  5 мая 2022, 12:31свой пример с моим дополнением в виде =""
Всё работает так же, как в ответе #1.
С уважением,
Михаил Каганский

eeigor

#9
Всё также при
B3, B6:B7: =""
?

Если я правильно понял, то я обновился на неудачную версию, и надо перейти на последнюю?
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

mikekaganski

#10
Я также не вижу правильной работы "<>" у себя: ячейки с "=""" считаются пустыми независимо от настройки "Search criteria = and <> must apply to whole cells". Не знаю, что именно даёт Ваши результаты. На первый взгляд, патчи между 7.3.2.2 и 7.3.3.1 не показывают ничего релевантного.

tdf#148948
С уважением,
Михаил Каганский

eeigor

#11
Михаил, спасибо за участие и багрепорт. Повторю только, что до обновления такого не было, и новое поведение неудобно и идёт в разрез с работой других функций.
Михаил, я полагал, что поскольку я работаю с целой ячейкой, то тот самый флажок (совпадение со всей ячейкой) роли не играет или не важен в данном случае. Установил флажок, и COUNTIFS() заработала верно.

Вот теперь ошибка полностью локализована. И это касается всех функций этого рода: SUMIFS() и пр.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community