Как добавить ещё одно условие к формуле

Автор Работник, 6 декабря 2023, 11:08

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

Работник

Добрый день.
На форуме есть тема https://forumooo.ru/index.php?topic=7473.0.
Практически то, что мне надо, отлично работает. Но в моём случае необходимо добавить ещё одно условие, чтобы считало по ещё одному столбцу. По ключевому слову. Ковыряю формулу "=СУММПРОИЗВ(ЕСЛИОШИБКА(1/СЧЁТЕСЛИ($B$2:$B$1000;$B$2:$B$1000);0);$B$2:$B$1000>=ДАТАЗНАЧ("2019-01-01");$B$2:$B$1000<ДАТАЗНАЧ("2019-02-01"))" 3-й день, ничего не выходит. В лучшем случае показывает неправильный ответ, а часто 0.

bigor

Добрый
И как вам помочь, если ни файла ни хотя бы описания, какой столбец на что проверять?
Поддержать наш форум можно здесь

Работник

Ну смотрите: есть ещё один столбец скажем E2:E1000 с данными по которым тоже нужна сортировка. Например по ключевому слову "Петров".
Т.е. общая задача: заставить ИИ выбрать количество уникальных дней за период (за год), одновременно сопоставляя эти дни с "Петровым". Ну т.е. счёт по 2-м условиям. Это на 3-м листе.
И ещё беда - либреофис при сравнении значений двух столбцов делает неправильные выводы. На 2-м листе смотрите август. Всего 4. И судя по цифрам удачно должно быть тоже 4. А либреофис упорно пишет 3. Неужели он не понимает разницу между цифрой 5 и 6.3?

bigor

Я так понял не сортировка, а фильтрация нужна. Попробуйте формулу =SUMPRODUCT(IFERROR(1/COUNTIFS(Лист1.B2:B567&Лист1.E2:E567;Лист1.B2:B567&Лист1.E2:E567);0);Лист1.B2:B567>=DATEVALUE("2023-01-01");Лист1.B2:B567<DATEVALUE("2023-12-31");$Лист1.E2:E567="Петров") возвращает 14, что похоже на правду.
Поддержать наш форум можно здесь

Работник

Спасибо за труды, 14 получается, но эта цифра не верна. Если считать вручную, то получается 8. Ещё раз, задача стоит такая - посчитать, сколько уникальных дней в месяце (за год) работник ездил скажем на стройку. Т.е. из таблицы видно, что за некоторые месяцы в один день работник ездил несколько раз. Так вот, их считать нужно за один раз.
В реальности в столбце "Е" не по одной фамилии, а по две, например "Иванов, Петров". Поэтому в формулу я добавляю звёздочки: "*Петров*". Но теперь вообще показывает 0. Может ошибка в синтаксисе?.... хотя в оригинальном файле всё работало. Вот формула =СЧЁТЕСЛИ(Испытания.E2:E1000;"*Петров*"). Но так считает общее количество выездов по Петрову, что не очень верно.
И неясен момент со сравнением столбцов. (Лист2). За август упорно пишет, что неудачно 1. Хотя должно быть 0.
Кстати, формулы у меня на русском. Версия Либры Version: 7.5.2.1 (X86_64) / LibreOffice Community
Build ID: 50(Build:1)
CPU threads: 6; OS: Linux 5.15; UI render: default; VCL: kf5 (cairo+xcb)
Locale: ru-RU (ru_RU.UTF-8); UI: ru-RU

Работник

Прошу прощения, считает верно. Проверил на исходном файле. Теперь осталось победить проблему с выбором одной фамилии из двух и понять, почему на 2-м листе неверно считает (сравнивает столбцы).

bigor

Цитата: Работник от  7 декабря 2023, 09:55почему на 2-м листе неверно считает (сравнивает столбцы).
считает верно, это формула не очень. Попробуйте такую =COUNTIFS(Лист1.B2:B57;"*.08.23";Лист1.D2:D57 - Лист1.C2:C57;"<0") массивная, вводится тремя кнопками ctrl+shift+enter
Цитата: Работник от  7 декабря 2023, 09:22Кстати, формулы у меня на русском
в ЛО можно переключать язык формул, я привык к английским.
Сервис - параметры - calc - Формула
Поддержать наш форум можно здесь

bigor

Цитата: Работник от  7 декабря 2023, 09:55выбором одной фамилии из двух
попробуйте так =SUMPRODUCT(IFERROR(1/COUNTIFS(Лист1.B2:B567&Лист1.E2:E567;Лист1.B2:B567&Лист1.E2:E567);0);Лист1.B2:B567>=DATEVALUE("2023-01-01");Лист1.B2:B567<DATEVALUE("2023-12-31");ISNUMBER(SEARCH("Петров";$Лист1.E2:E567)))
Поддержать наш форум можно здесь

Работник

Цитата: bigor от  7 декабря 2023, 10:21считает верно, это формула не очень. Попробуйте такую
=COUNTIFS(Лист1.B2:B57;"*.08.23";Лист1.D2:D57 - Лист1.C2:C57;"<0") массивная, вводится тремя кнопками ctrl+shift+enter
Большое спасибо, теперь всё верно.
Цитата: bigor от  7 декабря 2023, 10:26попробуйте так
=SUMPRODUCT(IFERROR(1/COUNTIFS(Лист1.B2:B567&Лист1.E2:E567;Лист1.B2:B567&Лист1.E2:E567);0);Лист1.B2:B567>=DATEVALUE("2023-01-01");Лист1.B2:B567<DATEVALUE("2023-12-31");ISNUMBER(SEARCH("Петров";$Лист1.E2:E567)))
Да, вот теперь всё чётко. Большая благодарность Вам!
Единственное что, при подсчёте вручную по некоторым фамилиям не сходится всё равно на единицу. Я насчитал 8, а либреофис насчитал 9. Буду думать. Если интересно - могу выложить обезличенный оригинальный файл.

bigor

Цитата: Работник от  7 декабря 2023, 11:49Если интересно - могу выложить обезличенный оригинальный файл.
выкладывайте, посмотрю
Поддержать наш форум можно здесь

Работник

Вотъ.
Пересчитал всё вручную, по одному только Сидорову не сходится, будь он неладен! ))) По остальным всё чётко.

bigor

Сидоров в один день 28.04 побыл на объекте и с Петровым и со Смирновым. Формула для подсчета берет ячейки с фамилиями и посчитала этот день Сидорову дважды
Поддержать наш форум можно здесь

Работник

Цитата: bigor от  7 декабря 2023, 20:40Сидоров в один день 28.04 побыл на объекте и с Петровым и со Смирновым. Формула для подсчета берет ячейки с фамилиями и посчитала этот день Сидорову дважды
Даааа! Точно! Блин, так и есть! А то я уже голову сломал! Формула считает  верно, к ней претензий нет.
Я уже удалил все лишние столбцы и оставил только даты и фамилии и всё равно не получается. Потом заменил все фамилии на Сидорова и тогда верно посчитало.
В общем огромное Вам спасибо за помощь, надеюсь и другим работникам это будет полезно.

Работник

Всем доброго дня!
Появилось ещё одно условие к формуле: =COUNTIFS(Лист1.B2:B57;"*.08.23";Лист1.D2:D57 - Лист1.C2:C57;"<0").
Как заставить посчитать, если в некоторых ячейках D стоит 0. Ну в смысле посчитать количество этих нулей. Кручу, верчу, не получается.

economist

Если включить русские формулы в Calc - станет доступно без переписывания (и добавления ошибок как в #13) большое число примеров для Excel с его полным аналогом функций СУММЕСЛИМН() и СЧЁТЕСЛИМН() из Интернета (поисковый индекс Яндекса с примерами кода, planetaexcel.ru итд).

UPD: Более простые СЧЁТЕСЛИ() тоже позволяют посчитать 0.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...