Страницы: 1 2 След.
RSS
Формула РАЗНДАТ, если первая дата - конец месяца
 
Здравствуйте!  
Нужно подсчитать количество полных месяцев между двумя датами.  
Вся проблема в том, что если первая дата - конец месяца, то у меня не получается использовать формулу РАЗНДАТ. Подробности в примере. Помогите, пжл, для всех приведённых случаев с написанием универсальной формулы. Большое количество ЕСЛИ, не подойдёт, так как всех концов месяцев за 20 лет мы не сможем охватить.  
Спасибо!
 
Ой!  
Модераторы! Поправьте, пжл, в названии темы РАНДАТ на РАЗНДАТ.  
Спасибо!
 
и какая у вас логика расчетов?  
почему между 29.03.2013 и 28.02.2013 "должно быть" 0 полных месяцев, а между 31.05.2013 и 30.04.2013 "должно быть" 1?  
и там, и там на самом деле - месяц плюс день.  
 
или это опять из категории "ой"? :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
а, нет, это я недопонял. сорри.  
март еще не прошёл.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
2 ikki  
Да, мне это нужно использовать для отчетов, где необходим подсчет полных месяцев. Отчетные даты (первая из дат), как раз, и есть даты на 1-ое число месяца. Вторая дата может быть абсолютно любой, но больше первой.  
Спасибо!
 
как-то так...  
=РАЗНДАТ(A6;B6;"M")+И(ДЕНЬ(B6)<ДЕНЬ(A6);ДЕНЬ(B6)=ДЕНЬ(КОНМЕСЯЦА(B6;0)))-И(ДЕНЬ(B6)>ДЕНЬ(A6);ДЕНЬ(A6)=ДЕНЬ(КОНМЕСЯЦА(A6;0));ДЕНЬ(B6)<ДЕНЬ(КОНМЕСЯЦА(B6;0)))  
 
но, наверное, и упростить можно :)))
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
2 ikki  
Спасибо!  
Буду думать :о))
 
Если РАЗНДАТ возвращает количество полных месяцев, то если число дня большей даты меньше  числа дня предыдущей даты, то в ответ входит только количество месяцев между ними (месяцы дат не учитываются, т.к. ещё неполные).  
А если число дня большей даты больше числа дня предыдущей даты, то добавляется ещё один месяц.  
Логика Ваших расчетов непонятна?  
Почему между 29.03.2013 и 28.02.2013 должен быть 1 полных месяц, а между 28.02.2013 и 29.03.2013 должно быть 0?
 
нет, неправильная формула. :(  
для пары 28.02.2012 и 29.03.2013 дает 13
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Сорри, надо читать:  
 
Логика Ваших расчетов непонятна.  
Почему между 29.01.2013 и 28.02.2013 должен быть 1 полный месяц, а между 28.02.2013 и 29.03.2013 должно быть 0?
 
Всё логично для 28.02.2012 и 29.03.2013. С 28.02.2012 прошёл целый год (12 мес.) до 28.02.2013, плюс ещё 1 полный месяц до 28.03.2013.
 
ну не знаю.  
мне это не кажется логичным :)  
ведь март 2013 ещё не прошёл.  
поэтому должно быть 12
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Может подойдёт  
РАЗНДАТ(A4;B4+4;"M")
 
Март-то не прошёл, но ведь и февраль-то не дошёл до конца))  
Просто между "непрошедшими" 28.02.2012 и 29.03.2012 прошёл 1 полный месяц. Не календарный, а "числовой" что ли  (не знаю, как умно сказать)))
 
2 Vlad  
Когда считаются внутримесячные даты - вопросов нет.  
Но как при отчете на 01/03/2013 (по 28/02/2013 включительно) я могу сказать, что до погашения остался месяц, если погашение произойдёт 29/03/2013?
 
А что, в 2007, 2010 и 2013 Офисе РАЗНДАТ тоже работает?  
Думал, что нет, у меня остаётся 2003 в частности по этой причине.
 
Даже не "месяц", а больше месяца. Предложенная Вами формула РАЗНДАТ(A4;B4+4;"M") некорректно отработает для других диапазонов, например 31/05/2013 и 29/06/2013. Покажет срок более мксяца.
 
2 Vlad  
Работает - работает.  
Меняйте офис. :о))
 
Но почему всё-таки в Вашем примере между 29.01.2013 и 28.02.2013 должен быть 1 полный месяц, а между 28.02.2013 и 29.03.2013 должно быть 0?  
В обоих случаях между датами 30 суток, а число дня в первом случае у поздней даты меньше ранней, во втором больше. Как такую логику объяснит Excel.
 
2 Vlad  
Согласен, задача алогичная. Здесь каким-то образом, ИМХО, нужно "прикручивать" КОНМЕСЯЦА.  
Ведь понимает же excel, что между 31/01 и 01/03 - один месяц, а вот между 30/01 и 28/02 показывает 0, хотя количество дней одинакове. Подозреваю, что там программа видит 01 и 03 месяцы.
 
Прикрутить-то легко, например  
ЕСЛИ(И(МЕСЯЦ(B4<>МЕСЯЦ(B4+1);ДЕНЬ(A4)>ДЕНЬ(B4));РАЗНДАТ(A4;B4;"M")+1;РАЗНДАТ(A4;B4;"M"))  
работает,  
но ошибается только для дат 28.02.2012 и 29.03.2012.  
Объясните словами логику для этого случая и всё легко решится.
 
Кажется понял. Так всё работает  
=ЕСЛИ(И(МЕСЯЦ(B4<>МЕСЯЦ(B4+1);ДЕНЬ(A4)>ДЕНЬ(B4));РАЗНДАТ(A4;B4;"M")+1;ЕСЛИ(И(МЕСЯЦ(B4)<>МЕСЯЦ(B4+1);ДЕНЬ(A4)<=ДЕНЬ(B4));РАЗНДАТ(A4;B4;"M");РАЗНДАТ(A4;B4;"M")-1))
 
Да! Вот для 31/07 - 31/08 показывает месяц, а для 31/08 - 30/09 показывает 0, хотя и там, и там последние дни месяцев. Понятно, что "ексель" "смотрит" на даты: если даты, как минимум, равны (при соседних месяцах), это для него месяц. А логика очень проста: сдаём отчет по состоянию, на 01/03/2013. Погашение бумаг ожидается 28/03/2013. Вопрос: сколько месяцев до погашения бумаг? По-моему, очевидно, что это будет менее месяца. Или я неправ?
 
2 Vlad  
Спасибо за помощь!  
Завтра (точнее, сегодня :о)) )постараюсь всё осмыслить, переварить и протестировать.  
Ещё раз благодарю.  
Удачи!!!
 
Не понял, подходит моя формула или неполностью? Если нет, надо ещё условий (ЕСЛИ) добавить.  
Экселю надо объяснять без бумаг и без погашения.  
Продолжите логику моей формулы:  
Если более поздняя дата - конец месяца, то к количеству месяцев между месяцами заданных дат добавляем 1. Если нет, то отнимаем 1.
 
Спасибо!  
Просто спать хочу пойти, а завтра поподробнее разберу!
 
Какой смысл нам проверять МЕСЯЦ(В4) и МЕСЯЦ (В4+1)? Разве они могут быть равны?
 
МЕСЯЦ(В4) и МЕСЯЦ (В4+1) могут быть равны, если В4 не конец месяца))  
Ведь В4 это дата, а не месяц.  
Всё я теперь понял, вот окончательная формула. Можно конечно чуть поиграться условиями и уменьшить количество знаков в ней.  
 
=ЕСЛИ(И(МЕСЯЦ(B4)<>МЕСЯЦ(B4+1);ДЕНЬ(A4)>ДЕНЬ(B4));РАЗНДАТ(A4;B4;"M")+1;ЕСЛИ(ИЛИ(И(МЕСЯЦ(B4)<>МЕСЯЦ(B4+1);ДЕНЬ(A4)<=ДЕНЬ(B4));И(МЕСЯЦ(B4)=МЕСЯЦ(B4+1);ДЕНЬ(A4)>ДЕНЬ(B4)));РАЗНДАТ(A4;B4;"M");РАЗНДАТ(A4;B4;"M")-1))  
 
Логика формулы:  
Если более поздняя дата - конец месяца, то к количеству месяцев между месяцами заданных дат добавляем 1. Если нет, то ничего не добавляем.  
 
А столько условий надо для функции РАЗНДАТ, чтобы сосчитать ТОЛЬКО количество месяцев между месяцами дат невзирая на количество полных месяцев между датами, как считает РАЗНДАТ.
 
Поигрался, получилось  
ЕСЛИ(И(МЕСЯЦ(B4<>МЕСЯЦ(B4+1);ДЕНЬ(A4)>ДЕНЬ(B4));РАЗНДАТ(A4;B4;"m")+1;ЕСЛИ(И(МЕСЯЦ(B4)=МЕСЯЦ(B4+1);ДЕНЬ(A4)<=ДЕНЬ(B4));РАЗНДАТ(A4;B4;"m")-1;РАЗНДАТ(A4;B4;"m")))
 
2 Vlad  
Да, я понял! Это всё равно, что проверить  
B4 > КОНМЕСЯЦА (В4;0)  
Спасибо!  
Сейчас время поджимает, но до вечера обязательно поюзаю и отпишу.  
Ещё раз благодарю за помощь.
Страницы: 1 2 След.
Читают тему
Наверх