Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Расчет среднего количества дней между двумя датами - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Расчет среднего количества дней между двумя датами
alexeych2014 Дата: Вторник, 26.09.2023, 15:49 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
Прошу помощи с исправлением формулы.
Требуется в конце столбца поставить формулу, которая бы рассчитывала среднее количество дней, которые были затрачены на согласование.
Формула
Код
=ARRAYFORMULA(AVERAGE(DAYS(G8:G18;D8:D18)))
работает, если заполнены все ячейки с датами. Но если попадается в диапазоне пропуск или текст, то получается неправильный результат или ошибка. Как сделать проверку, чтоб дни считались, если только в обоих ячейках начала и конца имеется дата и эта сторока не участвовала в расчёте среднего значения, если там есть пустое значение или текст?
Пример


Сообщение отредактировал Serge_007 - Вторник, 26.09.2023, 18:00
 
Ответить
СообщениеДобрый день.
Прошу помощи с исправлением формулы.
Требуется в конце столбца поставить формулу, которая бы рассчитывала среднее количество дней, которые были затрачены на согласование.
Формула
Код
=ARRAYFORMULA(AVERAGE(DAYS(G8:G18;D8:D18)))
работает, если заполнены все ячейки с датами. Но если попадается в диапазоне пропуск или текст, то получается неправильный результат или ошибка. Как сделать проверку, чтоб дни считались, если только в обоих ячейках начала и конца имеется дата и эта сторока не участвовала в расчёте среднего значения, если там есть пустое значение или текст?
Пример

Автор - alexeych2014
Дата добавления - 26.09.2023 в 15:49
Gustav Дата: Вторник, 26.09.2023, 23:18 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
С учетом последних достижений в области формулостроения я бы сделал так:
[vba]
Код
=AVERAGE(FILTER(G8:G18-D8:D18+1; MAP(D8:D18; G8:G18; LAMBDA(a; b; AND(ISDATE(a);ISDATE(b);a<=b)))))
[/vba]
Т.е. с помощью функции FILTER отбираем нужные записи с учетом одновременного выполнения трёх условий: "начало" является датой И "конец" является датой И "начало" не больше "конца". Из отобранных записей нам для каждой нужно только одно значение: "конец"-"начало"+1 день, которое будет учитываться при вычислении среднего. Ну, а с помощью функций типа MAP (и других массивных LAMBDA-функций) теперь можно реализовать для FILTER составное условие практически любой сложности. В частности попытка вычислить массивный результат ISDATE(D8:D18) к успеху не приводит, а в составе LAMBDA функция ISDATE, примененная к одиночному значению, очень даже успешно работает.

Кстати, расчетом по моей формуле получилось среднее значение 18,14285714 дней. Оно? Или "+1 день" не надо делать?


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 26.09.2023, 23:24
 
Ответить
СообщениеС учетом последних достижений в области формулостроения я бы сделал так:
[vba]
Код
=AVERAGE(FILTER(G8:G18-D8:D18+1; MAP(D8:D18; G8:G18; LAMBDA(a; b; AND(ISDATE(a);ISDATE(b);a<=b)))))
[/vba]
Т.е. с помощью функции FILTER отбираем нужные записи с учетом одновременного выполнения трёх условий: "начало" является датой И "конец" является датой И "начало" не больше "конца". Из отобранных записей нам для каждой нужно только одно значение: "конец"-"начало"+1 день, которое будет учитываться при вычислении среднего. Ну, а с помощью функций типа MAP (и других массивных LAMBDA-функций) теперь можно реализовать для FILTER составное условие практически любой сложности. В частности попытка вычислить массивный результат ISDATE(D8:D18) к успеху не приводит, а в составе LAMBDA функция ISDATE, примененная к одиночному значению, очень даже успешно работает.

Кстати, расчетом по моей формуле получилось среднее значение 18,14285714 дней. Оно? Или "+1 день" не надо делать?

Автор - Gustav
Дата добавления - 26.09.2023 в 23:18
alexeych2014 Дата: Среда, 27.09.2023, 09:57 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Спасибо. Это невероятно, работает! Это никогда не изучить..
Я разобрался с "+1" - если нужно использовать в расчёте первый день, то это нужно. Если счёт дней ведётся со следующего после запуска дня, то это нужно исключить. Посмотрим как правильнее в конкретном случае.


Сообщение отредактировал alexeych2014 - Среда, 27.09.2023, 13:08
 
Ответить
СообщениеСпасибо. Это невероятно, работает! Это никогда не изучить..
Я разобрался с "+1" - если нужно использовать в расчёте первый день, то это нужно. Если счёт дней ведётся со следующего после запуска дня, то это нужно исключить. Посмотрим как правильнее в конкретном случае.

Автор - alexeych2014
Дата добавления - 27.09.2023 в 09:57
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!