Как посчитать високосный год в excel

На чтение 2 мин. Просмотров 1.9k.

= МЕСЯЦ (ДАТА (ГОД (дата); 2;29)) = 2

Если вы хотите проверить, является ли год определенной даты високосным, вы можете использовать формулу, в которой используются функции МЕСЯЦ, ГОД и ДАТА.

Год - високосный год

В показанном примере формула в ячейке C5:

= МЕСЯЦ (ДАТА (ГОД (B5); 2;29)) = 2

Основой этой формулы является функция ДАТА, которая автоматически подстраивается к значениям месяца и года, находящимся вне диапазона. В формуле год переносится на дату без изменений, наряду с 2 за месяц (февраль) и 29 за день. В високосные годы февраль имеет 29 дней, поэтому функция ДАТА просто возвращает дату 29 февраля этого года.

Однако в не високосные годы ДАТА вернет дату 1 марта года, потому что нет 29-го дня, а ДАТА просто переносит дату вперед в следующий месяц.

Наконец, МЕСЯЦ просто извлекает месяц из результата, предоставленного ДАТА, который сравнивается с 2, используя знак равенства.

Если месяц равен 2, формула возвращает значение ИСТИНА. Если нет, месяц должен быть равен 3, а формула возвращает ЛОЖЬ.

Когда вы просто хотите проверить год (например, 2015, 2016 и т.д .), измените формулу следующим образом:

= МЕСЯЦ (ДАТА (год; 2;29)) = 2

Если приведенная выше формула кажется «умной» и вам нужно более буквальное решение, вы можете проверить, содержит ли год 366 дней вместо этой формулы:

= ДАТА(ГОД (дата) +1;1;1) -ДЕНЬ (ГОД (дата); 1;1)

Эта формула генерирует две даты, а затем вычитает 1 января данного года с 1 января следующего года.

Download PC Repair Tool to quickly find & fix Windows errors automatically

Keeping data on the number of leap years in a list is important for companies, government offices, and event organizers. If you need to check for the number of leap years between two dates in Excel, please read through this article.

A leap year has one day more than a non-leap year, but it impacts a lot of calculations. The payroll for many companies are different for leap years, the profit calculations for business are impacted by leap years.

Calculate the number of leap years between two dates in Excel

The syntax to count the number of leap years between two dates in Excel is as follows:

=DATE(YEAR(<cell with end date>),1,1)-DATE(YEAR(<cell with start date>),1,1)-((YEAR(<cell with end date>)-YEAR(<cell with start date>))*365)+AND(MONTH(DATE(YEAR(<cell with start date>),2,29))=2,MONTH(DATE(YEAR(<cell with end date>),2,29))=2)*1

Where, <cell with start date> and <cell with end date> are the cells specifying the first and last date of the period between which you need the count of leap years. The dates are to be in MM/DD/YYYY format.

The formula is to be entered in the cell where you need the result (the number of leap years between two dates in Excel).

For example, if we need to calculate the number of leap years between 23rd March 1964 and 12th January 2018, we would first write the dates in MM/DD/YYYY format as follows:

  • Start date: 03/23/1964
  • End date: 01/12/2018

Let us assume the start date is in cell B4, the end date is in cell C4, and the count of the number of leap years between these two dates is needed in cell E4, the formula would become:

=DATE(YEAR(C4),1,1)-DATE(YEAR(B4),1,1)-((YEAR(C4)-YEAR(B4))*365)+AND(MONTH(DATE(YEAR(B4),2,29))=2,MONTH(DATE(YEAR(C4),2,29))=2)*1

Enter this formula in cell E4 and click anywhere outside that cell.

Count number of leap years between two dates in Excel

You will get the count of the number of leap years between those two dates.

Count number of leap years between a list two dates in Excel

In case you have a list of start and end dates in an excel sheet, you can get the count of the number of leap years between the list of two dates in a column using the fill option.

Count number of leap years between two dates in Excel

Eg. If the list of start dates are in column B, the list of end dates is in column C, and you need to find the list of counts of leap years in column E for the corresponding start and end dates in the same row, use the same formula explained above and then use the fill option to pull the results across column E.

I hope it helps!

Ezoic

Karan is a B.Tech, with several years of experience as an IT Analyst. He is a passionate Windows user who loves troubleshooting problems and writing about Microsoft technologies.

Часто в процессе работы с датами возникает необходимость динамического определения даты и последнего дня недели в месяце. Естественно можно просто посмотреть в обычный календарь, но для автоматизации некоторых задач в Excel с помощью формул нужно динамически получить дату последнего месяца особенно в феврале и определить день недели. Ведь у високосного года (366) месяц февраль имеет 29 дней, а в обычном году – 28.

Сколько дней в феврале для любого года и любой даты?

Для начала рассмотрим, как вычислить дату последнего дня февраля месяца для любого года, чтобы определить високосный год или нет:

Сколько дней в феврале.

Анализируя пример на данном рисунке, следует помнить, что данную формулу можно применять для любого месяца, чтобы получить дату последнего дня, а не только для февраля. Иначе она выглядела бы так:

=ДАТА(ГОД(A2);3;0)

Функция ДАТА позволяет генерировать дату на лету с помощью трех аргументов:

  1. Год – можно указать любое число только лишь в диапазоне от 1900 и до 9999.
  2. Месяц – любое положительное или отрицательное число.
  3. День – любое положительное или отрицательное число.

Например, если в третьем аргументе указано число 0 как номер дня, Excel вычислит дату последнего дня из предыдущего месяца. Для наглядного примера составим формулу с числом 0, которая возвращает 29 февраля 2000-го года:

=ДАТА(2000;3;0)

В следующем примере формулы вместо ввода статических значений в первые 2 аргумента функции ДАТА (год и месяц), используется функция ГОД, которая возвращает годы с исходных дат. Аналогично используется функция МЕСЯЦ возвращающая порядковый номер месяца в году из исходной даты. К этому номеру в формуле добавляется число 1. Благодаря чему мы получаем номер следующего месяца. Так как в третьем аргументе стоит число 0, автоматически получаем порядковый номер последнего дня в текущем месяце, который нас интересует.



Какой день недели для последнего дня месяца?

На этом рисунке ниже показано, как вычислить день недели и дату последнего дня февраля для любого года:

Какой день недели.

Формула состоит из двух частей, разделенных соединяющим оператором амперсантом (&» — «&):

  1. В первой части функция ТЕКСТ преобразует числовое значение, которое возвращает функция ДАТА в формат даты. Он указано во втором аргументе функции – «дд.мм.гг»
  2. Во второй части функция ТЕКСТ определяет день недели для исходной даты в первом ее аргументе, с помощью формата ячеек «дддд» указанном во втором аргументе.

Пример использования функции КОНМЕСЯЦА

В новых версиях Excel предусмотрена функция КОНМЕСЯЦА, которая служит альтернативным решением для выше описанной формулы:

КОНМЕСЯЦА.

Благодаря функции КОНМЕСЯЦА можно определять дату для текущего, предыдущего или будущего месяца заполнив лишь только 2 аргумента:

  1. Нач_дата – исходная дата или ссылка на нее.
  2. Число_месяцев – порядковый номер месяца начиная от исходной даты. Может быть любое положительное или отрицательное число. Примеры заполнения аргументов для функции КОНМЕСЯЦА, которая возвращает дату 29 февраля 2000-го года:

=КОНМЕСЯЦА(«01.01.2000»;1)

Если же мы укажем во втором аргументе отрицательное число, тогда функция возвращает нам дату последнего дня для предыдущего месяца:

=КОНМЕСЯЦА(«01.03.2000»;-1)

Разумеется, если мы указываем во втором аргументе число 0 тогда получим необходимое значение даты последнего дня для текущего месяца:

=КОНМЕСЯЦА(«01.02.2000»;0)

Как определить високосный год или нет в Excel?

Чтобы определить високосный год или нет в Excel существует множество решений. Вот несколько из них:

определить високосный год.

При работе с датами особую сложность предоставляет тот факт, что раз в 4-е года количество дней в году составляет 366, тогда как в обычных годах 365. Поэтому иногда приходится воспользоваться вышеописанными примерами и формулами для различных вычислений в Excel.

 

falcon

Пользователь

Сообщений: 44
Регистрация: 02.01.2013

напрягаю голову и не совсем понимаю как узнать количество дней в году, чтобы сильно не усложнять формулу  
мне надо чтобы в одной ячейке ввел например год 2011, а в другой ячейке появилось 365  
например ввел в А1 2011, в А2 появилось 365, ввел в А1 2012, в А2 появилось 366,  

  до сегодняшнего дня у меня кол-во дней считалось таким образом    
=ДАТА(ГОД([@Дата])-1;МЕСЯЦ([@Дата]);ДЕНЬ([@Дата]))-[@Дата]
но если действовать так, то 366 дней появляется только после 29 февраля, т.е. в марте месяце  
на данный момент excel мне говорит, что январь и февраль в 2012 году имеют 365 дней в году, а с марта уже 366 :(  
это  логично исходя из формулы, но не практично, т.к. по всем человеческим правилам весь год високосный, а не только отрезок с марта по март :)  

    вопрос вроде уже сколько раз обсосаный, но голова сегодня не может предложить простой формулы, а в поиске я сколько тем перечитал найти элегантного решения также не смог :(  

  помогите пожалуйста

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Количество дней в году для заданной даты:  
=ДАТА(Год(х);12;31)-ДАТА(Год(х);1;1)+1  
х — дата.  
Можно прямо в формуле (31 дек.-01 янв. любого года):  
=A1-A2+1  

  Не досмотрел. Точно по вопросу:  
=ДАТА(A1;12;31)-ДАТА(A1;1;1)+1

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Если 29 февраля этого года — дата, то тогда 366. Если ошибка — 365.  

  =IF(ISERR(DATEVALUE(«29.02.»&A1));365;366)  
В A1 — год

 

VLad777

Пользователь

Сообщений: 5018
Регистрация: 22.12.2012

если просто 2011 (общий формат)  
вариант аналогичный варианту от vikttur  
=ДАТА(A2;12;31)-ДАТА(A2-1;12;31)

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

 

слэн

Пользователь

Сообщений: 5192
Регистрация: 16.01.2013

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Hugo}{date=18.01.2012 11:02}{thema=}{post}Если 29 февраля этого года — дата, то тогда 366. Если ошибка — 365.{/post}{/quote}:-) Или 1 марта минус 1 день, и смотреть, что там за дата.

 

falcon

Пользователь

Сообщений: 44
Регистрация: 02.01.2013

как быстро оригинальных идей накидали :)  

  спасибо огромное  

  решение для своего вопроса нашел  

    только бесит различие русских и английских формул, а точнее их полное игнорирование, русским офисом (у меня 2010) :(  
скопировал в ячейку =IF(MOD(A1;4);365;366)  
и вперед искать русские аналоги,  ладно встроенная справка помогла, но допустим формулы ISERR, DATEVALUE она не знает что такое, ладно хоть я сам понимаю что за формулы  
но проблема при открытии на другом компьютере с русским офисом остается :(    
получается если у разработчика офис английский а у юзера русский то работать не будет чтоли ?

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Будет. Не все формулы правда, но 99% будут.

 

falcon

Пользователь

Сообщений: 44
Регистрация: 02.01.2013

{quote}{login=слэн}{date=18.01.2012 11:24}{thema=}{post}=IF(MOD(A1;4);365;366){/post}{/quote}  
интересное решение у вас с Hugo  
но этоже получается чистая случайность что високосный год только в четные года, допустим если бы 2011 год был високосным, то формула бы значительно усложнилась  

  в любом случае ваш вариант работает и я не придираюсь :) спасибо

 

falcon

Пользователь

Сообщений: 44
Регистрация: 02.01.2013

{quote}{login=Hugo}{date=18.01.2012 12:09}{thema=}{post}Будет. Не все формулы правда, но 99% будут.{/post}{/quote}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы  
на данный момент узнал что проверка ошибок работать отказывается :(

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

{quote}{login=falcon}{date=18.01.2012 12:14}{thema=Re: }{post}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы  
на данный момент узнал что проверка ошибок работать отказывается :({/post}{/quote}  
2100, 2200, 2300, 2500,2700 и т.д. годы не високосные, а формула посчитает его как високосный.  
А вот 1900 будет считат так же как и Excel — високосным, хотя таковым не является

 

Hugo

Пользователь

Сообщений: 23253
Регистрация: 22.12.2012

Да, не знал такую тонкость (из википедии):  
Иными словами, год является високосным, если он кратен 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>

 

egonomist

Пользователь

Сообщений: 409
Регистрация: 21.12.2012

вот формула от Саныча с 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 дней я пощитала на календоре

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

«Щитать» необязательно — достаточно взглянуть на февраль месяц.

 

Владимир

Пользователь

Сообщений: 8196
Регистрация: 21.12.2012

{quote}{login=Юрий М}{date=07.11.2012 02:38}{thema=}{post}»Щитать» необязательно — достаточно взглянуть на февраль месяц.{/post}{/quote}  

  В «календоре» обязательно.

«..Сладку ягоду рвали вместе, горьку ягоду я одна.»

 

Юрий М

Модератор

Сообщений: 60585
Регистрация: 14.09.2012

Контакты см. в профиле

#21

07.11.2012 16:49:52

:-)

Основой этой формулы является функция ДАТА, которая автоматически подстраивается к значениям месяца и года, находящимся вне диапазона. В формуле год переносится на дату без изменений, наряду с 2 за месяц (февраль) и 29 за день. В високосные годы февраль имеет 29 дней, поэтому функция ДАТА просто возвращает дату 29 февраля этого года.

Однако в не високосные годы ДАТА вернет дату 1 марта года, потому что нет 29-го дня, а ДАТА просто переносит дату вперед в следующий месяц.

Наконец, МЕСЯЦ просто извлекает месяц из результата, предоставленного ДАТА, который сравнивается с 2, используя знак равенства.

Если месяц равен 2, формула возвращает значение ИСТИНА. Если нет, месяц должен быть равен 3, а формула возвращает ЛОЖЬ.

Когда вы просто хотите проверить год (например, 2015, 2016 и т.д .), измените формулу следующим образом:

Like this post? Please share to your friends:
  • Как посчитать весь столбец в excel на число
  • Как посчитать в экселе сумму в строке по горизонтали excel
  • Как посчитать в экселе количество рабочих дней между датами в excel
  • Как посчитать в экселе количество одинаковых значений в столбце excel
  • Как посчитать в таблице excel проценты от числа