На чтение 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.
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.
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!
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)
Функция ДАТА позволяет генерировать дату на лету с помощью трех аргументов:
- Год – можно указать любое число только лишь в диапазоне от 1900 и до 9999.
- Месяц – любое положительное или отрицательное число.
- День – любое положительное или отрицательное число.
Например, если в третьем аргументе указано число 0 как номер дня, Excel вычислит дату последнего дня из предыдущего месяца. Для наглядного примера составим формулу с числом 0, которая возвращает 29 февраля 2000-го года:
=ДАТА(2000;3;0)
В следующем примере формулы вместо ввода статических значений в первые 2 аргумента функции ДАТА (год и месяц), используется функция ГОД, которая возвращает годы с исходных дат. Аналогично используется функция МЕСЯЦ возвращающая порядковый номер месяца в году из исходной даты. К этому номеру в формуле добавляется число 1. Благодаря чему мы получаем номер следующего месяца. Так как в третьем аргументе стоит число 0, автоматически получаем порядковый номер последнего дня в текущем месяце, который нас интересует.
Какой день недели для последнего дня месяца?
На этом рисунке ниже показано, как вычислить день недели и дату последнего дня февраля для любого года:
Формула состоит из двух частей, разделенных соединяющим оператором амперсантом (&» — «&):
- В первой части функция ТЕКСТ преобразует числовое значение, которое возвращает функция ДАТА в формат даты. Он указано во втором аргументе функции – «дд.мм.гг»
- Во второй части функция ТЕКСТ определяет день недели для исходной даты в первом ее аргументе, с помощью формата ячеек «дддд» указанном во втором аргументе.
Пример использования функции КОНМЕСЯЦА
В новых версиях Excel предусмотрена функция КОНМЕСЯЦА, которая служит альтернативным решением для выше описанной формулы:
Благодаря функции КОНМЕСЯЦА можно определять дату для текущего, предыдущего или будущего месяца заполнив лишь только 2 аргумента:
- Нач_дата – исходная дата или ссылка на нее.
- Число_месяцев – порядковый номер месяца начиная от исходной даты. Может быть любое положительное или отрицательное число. Примеры заполнения аргументов для функции КОНМЕСЯЦА, которая возвращает дату 29 февраля 2000-го года:
=КОНМЕСЯЦА(«01.01.2000»;1)
Если же мы укажем во втором аргументе отрицательное число, тогда функция возвращает нам дату последнего дня для предыдущего месяца:
=КОНМЕСЯЦА(«01.03.2000»;-1)
Разумеется, если мы указываем во втором аргументе число 0 тогда получим необходимое значение даты последнего дня для текущего месяца:
=КОНМЕСЯЦА(«01.02.2000»;0)
Как определить високосный год или нет в Excel?
Чтобы определить високосный год или нет в Excel существует множество решений. Вот несколько из них:
При работе с датами особую сложность предоставляет тот факт, что раз в 4-е года количество дней в году составляет 366, тогда как в обычных годах 365. Поэтому иногда приходится воспользоваться вышеописанными примерами и формулами для различных вычислений в Excel.
falcon Пользователь Сообщений: 44 |
напрягаю голову и не совсем понимаю как узнать количество дней в году, чтобы сильно не усложнять формулу до сегодняшнего дня у меня кол-во дней считалось таким образом вопрос вроде уже сколько раз обсосаный, но голова сегодня не может предложить простой формулы, а в поиске я сколько тем перечитал найти элегантного решения также не смог помогите пожалуйста |
vikttur Пользователь Сообщений: 47199 |
Количество дней в году для заданной даты: Не досмотрел. Точно по вопросу: |
Hugo Пользователь Сообщений: 23253 |
Если 29 февраля этого года — дата, то тогда 366. Если ошибка — 365. =IF(ISERR(DATEVALUE(«29.02.»&A1));365;366) |
VLad777 Пользователь Сообщений: 5018 |
если просто 2011 (общий формат) |
Hugo Пользователь Сообщений: 23253 |
|
слэн Пользователь Сообщений: 5192 |
|
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
{quote}{login=Hugo}{date=18.01.2012 11:02}{thema=}{post}Если 29 февраля этого года — дата, то тогда 366. Если ошибка — 365.{/post}{/quote}:-) Или 1 марта минус 1 день, и смотреть, что там за дата. |
falcon Пользователь Сообщений: 44 |
как быстро оригинальных идей накидали спасибо огромное решение для своего вопроса нашел только бесит различие русских и английских формул, а точнее их полное игнорирование, русским офисом (у меня 2010) |
Hugo Пользователь Сообщений: 23253 |
Будет. Не все формулы правда, но 99% будут. |
falcon Пользователь Сообщений: 44 |
{quote}{login=слэн}{date=18.01.2012 11:24}{thema=}{post}=IF(MOD(A1;4);365;366){/post}{/quote} в любом случае ваш вариант работает и я не придираюсь спасибо |
falcon Пользователь Сообщений: 44 |
{quote}{login=Hugo}{date=18.01.2012 12:09}{thema=}{post}Будет. Не все формулы правда, но 99% будут.{/post}{/quote}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы |
MCH Пользователь Сообщений: 3875 |
{quote}{login=falcon}{date=18.01.2012 12:14}{thema=Re: }{post}а как узнать? чисто спортивный интерес, чтобы на будущее понимать где возможны проблемы |
Hugo Пользователь Сообщений: 23253 |
Да, не знал такую тонкость (из википедии): В общем, MOD не годится, но в обозримом времени вполне Про ошибки формул — я не формулист, но сталкивался с проблемами форматирования дат, ну и инженерные формулы надстройки сами не переводились. |
{quote}{login=Hugo}{date=18.01.2012 12:46}{thema=}{post}Да, не знал такую тонкость{/post}{/quote} <EM>http://www.planetaexcel.ru/forum.php?thread_id=10915</EM> |
|
egonomist Пользователь Сообщений: 409 |
вот формула от Саныча с sql.ru -ни разу не подводила |
=(ДАТАЗНАЧ(«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 Контакты см. в профиле |
«Щитать» необязательно — достаточно взглянуть на февраль месяц. |
Владимир Пользователь Сообщений: 8196 |
{quote}{login=Юрий М}{date=07.11.2012 02:38}{thema=}{post}»Щитать» необязательно — достаточно взглянуть на февраль месяц.{/post}{/quote} В «календоре» обязательно. «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
Юрий М Модератор Сообщений: 60585 Контакты см. в профиле |
#21 07.11.2012 16:49:52
|
Основой этой формулы является функция ДАТА, которая автоматически подстраивается к значениям месяца и года, находящимся вне диапазона. В формуле год переносится на дату без изменений, наряду с 2 за месяц (февраль) и 29 за день. В високосные годы февраль имеет 29 дней, поэтому функция ДАТА просто возвращает дату 29 февраля этого года.
Однако в не високосные годы ДАТА вернет дату 1 марта года, потому что нет 29-го дня, а ДАТА просто переносит дату вперед в следующий месяц.
Наконец, МЕСЯЦ просто извлекает месяц из результата, предоставленного ДАТА, который сравнивается с 2, используя знак равенства.
Если месяц равен 2, формула возвращает значение ИСТИНА. Если нет, месяц должен быть равен 3, а формула возвращает ЛОЖЬ.
Когда вы просто хотите проверить год (например, 2015, 2016 и т.д .), измените формулу следующим образом: