Страницы: 1
RSS
как узнать количество дней в году, 365 или 366
 
напрягаю голову и не совсем понимаю как узнать количество дней в году, чтобы сильно не усложнять формулу  
мне надо чтобы в одной ячейке ввел например год 2011, а в другой ячейке появилось 365  
например ввел в А1 2011, в А2 появилось 365, ввел в А1 2012, в А2 появилось 366,  
 
до сегодняшнего дня у меня кол-во дней считалось таким образом    
=ДАТА(ГОД([@Дата])-1;МЕСЯЦ([@Дата]);ДЕНЬ([@Дата]))-[@Дата]
но если действовать так, то 366 дней появляется только после 29 февраля, т.е. в марте месяце  
на данный момент excel мне говорит, что январь и февраль в 2012 году имеют 365 дней в году, а с марта уже 366 :(  
это  логично исходя из формулы, но не практично, т.к. по всем человеческим правилам весь год високосный, а не только отрезок с марта по март :)  
 
 
вопрос вроде уже сколько раз обсосаный, но голова сегодня не может предложить простой формулы, а в поиске я сколько тем перечитал найти элегантного решения также не смог :(  
 
помогите пожалуйста
 
Количество дней в году для заданной даты:  
=ДАТА(Год(х);12;31)-ДАТА(Год(х);1;1)+1  
х - дата.  
Можно прямо в формуле (31 дек.-01 янв. любого года):  
=A1-A2+1  
 
Не досмотрел. Точно по вопросу:  
=ДАТА(A1;12;31)-ДАТА(A1;1;1)+1
 
Если 29 февраля этого года - дата, то тогда 366. Если ошибка - 365.  
 
=IF(ISERR(DATEVALUE("29.02."&A1));365;366)  
В A1 - год
 
если просто 2011 (общий формат)  
вариант аналогичный варианту от vikttur  
=ДАТА(A2;12;31)-ДАТА(A2-1;12;31)
 
=IF(MOD(A1;4)=0;366;365)
 
=IF(MOD(A1;4);365;366)
Живи и дай жить..
 
{quote}{login=Hugo}{date=18.01.2012 11:02}{thema=}{post}Если 29 февраля этого года - дата, то тогда 366. Если ошибка - 365.{/post}{/quote}:-) Или 1 марта минус 1 день, и смотреть, что там за дата.
 
как быстро оригинальных идей накидали :)  
 
спасибо огромное  
 
решение для своего вопроса нашел  
 
 
только бесит различие русских и английских формул, а точнее их полное игнорирование, русским офисом (у меня 2010) :(  
скопировал в ячейку =IF(MOD(A1;4);365;366)  
и вперед искать русские аналоги,  ладно встроенная справка помогла, но допустим формулы ISERR, DATEVALUE она не знает что такое, ладно хоть я сам понимаю что за формулы  
но проблема при открытии на другом компьютере с русским офисом остается :(    
получается если у разработчика офис английский а у юзера русский то работать не будет чтоли ?
 
Будет. Не все формулы правда, но 99% будут.
 
{quote}{login=слэн}{date=18.01.2012 11:24}{thema=}{post}=IF(MOD(A1;4);365;366){/post}{/quote}  
интересное решение у вас с Hugo  
но этоже получается чистая случайность что високосный год только в четные года, допустим если бы 2011 год был високосным, то формула бы значительно усложнилась  
 
в любом случае ваш вариант работает и я не придираюсь :) спасибо
 
{quote}{login=Hugo}{date=18.01.2012 12:09}{thema=}{post}Будет. Не все формулы правда, но 99% будут.{/post}{/quote}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы  
на данный момент узнал что проверка ошибок работать отказывается :(
 
{quote}{login=falcon}{date=18.01.2012 12:14}{thema=Re: }{post}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы  
на данный момент узнал что проверка ошибок работать отказывается :({/post}{/quote}  
2100, 2200, 2300, 2500,2700 и т.д. годы не високосные, а формула посчитает его как високосный.  
А вот 1900 будет считат так же как и Excel - високосным, хотя таковым не является
 
Да, не знал такую тонкость (из википедии):  
Иными словами, год является високосным, если он кратен 4 и при этом не кратен 100, либо кратен 400. Год не является високосным, если он не кратен 4, либо кратен 100 и не кратен 400.  
 
В общем, MOD не годится, но в обозримом времени вполне :)  
 
Про ошибки формул - я не формулист, но сталкивался с проблемами форматирования дат, ну и инженерные формулы надстройки сами не переводились.
 
{quote}{login=Hugo}{date=18.01.2012 12:46}{thema=}{post}Да, не знал такую тонкость{/post}{/quote}  
vikttur приводил очень интересную ссылку про 29 февраля 1900 года в Excele:  
<EM>http://www.planetaexcel.ru/forum.php?thread_id=10915</EM>
 
вот формула от Саныча с sql.ru -ни разу не подводила  
=ДЕНЬ(ДАТА(ГОД(A1);3;0))+337  
на vba:  
DayinYear=Day(DateSerial(Year(Range("A1"), 3, 0)) + 337;
 
=(ДАТАЗНАЧ("31.12."&ГОД(B7))-ДАТАЗНАЧ("01.01."&ГОД(B7))+1)
 
{quote}{login=}{date=03.02.2012 09:34}{thema=Re: как узнать количество дней в году, 365 или 366}{post}=(ДАТАЗНАЧ("31.12."&ГОД(B7))-ДАТАЗНАЧ("01.01."&ГОД(B7))+1){/post}{/quote} а вообще можно прописать свою функцию на VBA чтобы не заморачиваться с такой длинной формулой, а в экселе юзать типа ДНЕЙВГОДУ Function ДНЕЙВГОДУ(i As String) As Integer ДНЕЙВГОДУ= DateValue("31.12." & Year(i)) - DateValue("01.01." & Year(i)) + 1 End Function вот таким образом добавить эту функцию можно http://www.firststeps.ru/vba/excel/r.php?72 и незабываем книгу сохранить с поддержкой макросов... удачи;)
 
В 2011 году 365дней 2012 366 дней я пощитала на календоре
 
"Щитать" необязательно - достаточно взглянуть на февраль месяц.
 
{quote}{login=Юрий М}{date=07.11.2012 02:38}{thema=}{post}"Щитать" необязательно - достаточно взглянуть на февраль месяц.{/post}{/quote}  
 
В "календоре" обязательно.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
:-)
Страницы: 1
Читают тему
Наверх