Добрый день. Прошу помощи с исправлением формулы. Требуется в конце столбца поставить формулу, которая бы рассчитывала среднее количество дней, которые были затрачены на согласование. Формула
Код
=ARRAYFORMULA(AVERAGE(DAYS(G8:G18;D8:D18)))
работает, если заполнены все ячейки с датами. Но если попадается в диапазоне пропуск или текст, то получается неправильный результат или ошибка. Как сделать проверку, чтоб дни считались, если только в обоих ячейках начала и конца имеется дата и эта сторока не участвовала в расчёте среднего значения, если там есть пустое значение или текст? Пример
Добрый день. Прошу помощи с исправлением формулы. Требуется в конце столбца поставить формулу, которая бы рассчитывала среднее количество дней, которые были затрачены на согласование. Формула
Код
=ARRAYFORMULA(AVERAGE(DAYS(G8:G18;D8:D18)))
работает, если заполнены все ячейки с датами. Но если попадается в диапазоне пропуск или текст, то получается неправильный результат или ошибка. Как сделать проверку, чтоб дни считались, если только в обоих ячейках начала и конца имеется дата и эта сторока не участвовала в расчёте среднего значения, если там есть пустое значение или текст? Примерalexeych2014
Сообщение отредактировал Serge_007 - Вторник, 26.09.2023, 18:00
[/vba] Т.е. с помощью функции FILTER отбираем нужные записи с учетом одновременного выполнения трёх условий: "начало" является датой И "конец" является датой И "начало" не больше "конца". Из отобранных записей нам для каждой нужно только одно значение: "конец"-"начало"+1 день, которое будет учитываться при вычислении среднего. Ну, а с помощью функций типа MAP (и других массивных LAMBDA-функций) теперь можно реализовать для FILTER составное условие практически любой сложности. В частности попытка вычислить массивный результат ISDATE(D8:D18) к успеху не приводит, а в составе LAMBDA функция ISDATE, примененная к одиночному значению, очень даже успешно работает.
Кстати, расчетом по моей формуле получилось среднее значение 18,14285714 дней. Оно? Или "+1 день" не надо делать?
С учетом последних достижений в области формулостроения я бы сделал так: [vba]
[/vba] Т.е. с помощью функции FILTER отбираем нужные записи с учетом одновременного выполнения трёх условий: "начало" является датой И "конец" является датой И "начало" не больше "конца". Из отобранных записей нам для каждой нужно только одно значение: "конец"-"начало"+1 день, которое будет учитываться при вычислении среднего. Ну, а с помощью функций типа MAP (и других массивных LAMBDA-функций) теперь можно реализовать для FILTER составное условие практически любой сложности. В частности попытка вычислить массивный результат ISDATE(D8:D18) к успеху не приводит, а в составе LAMBDA функция ISDATE, примененная к одиночному значению, очень даже успешно работает.
Кстати, расчетом по моей формуле получилось среднее значение 18,14285714 дней. Оно? Или "+1 день" не надо делать?Gustav
Спасибо. Это невероятно, работает! Это никогда не изучить.. Я разобрался с "+1" - если нужно использовать в расчёте первый день, то это нужно. Если счёт дней ведётся со следующего после запуска дня, то это нужно исключить. Посмотрим как правильнее в конкретном случае.
Спасибо. Это невероятно, работает! Это никогда не изучить.. Я разобрался с "+1" - если нужно использовать в расчёте первый день, то это нужно. Если счёт дней ведётся со следующего после запуска дня, то это нужно исключить. Посмотрим как правильнее в конкретном случае.alexeych2014
Сообщение отредактировал alexeych2014 - Среда, 27.09.2023, 13:08