Первый день месяца можно определить с помощью функции
ДАТА()
или
КОНМЕСЯЦА()
.
Если ячейка
А2
содержит дату, то нижеследующие формулы вернут первый день месяца этой даты (см.
файл примера
):
=КОНМЕСЯЦА(A2;-1)+1
=ДАТА(ГОД(A2);МЕСЯЦ(A2);1)
Если
А2
содержит дату, а
B
2
число месяцев, то формула
=ДАТА(ГОД(A2);МЕСЯЦ(A2)+B2;1)
вернет первое число месяца, отстоящего от исходного на число месяцев из ячейки
B
2
(т.е. если
А2
содержит 05/08/1999, а
B
2
– 3, то результат будет = 01/11/1999).
Тот же результат вернет формула
=КОНМЕСЯЦА(A2;B2-1)+1
Последний день месяца определяется в статье
Последний день месяца
.
Формулы для определения первого и последнего дней месяца от текущей или произвольной даты. Использовать можно в шаблонах различных документов и отчетов, при заполнении которых требуется отобразить интервал дат с участием первого и(или) последнего дня месяца.
Для формулы, преобразующей текущую или другую дату в первый день месяца, используем функции «ДАТА», «ГОД» и «МЕСЯЦ»:
- Первый день текущего месяца от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());1)
- Первый день прошлого месяца от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())-1;1)
- Первый день текущего месяца предыдущего года от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ())-1;МЕСЯЦ(СЕГОДНЯ());1)
- Первый день месяца от произвольной даты, записанной в ячейку «A1»:
=ДАТА(ГОД(A1);МЕСЯЦ(A1);1)
Определить первый день месяца можно не только для прошедших периодов, но и для будущих, прибавив соответствующее количество лет или месяцев в формулу.
Последний день месяца в Excel
Для определения последнего месяца от текущей или произвольной даты в Excel, начиная с версии 2007 года, существует функция «КОНМЕСЯЦА» с двумя аргументами: «Начальная дата» и «Количество месяцев». Если «Количество месяцев» равно 0, то будет возвращен последний день того месяца, который содержится в аргументе «Начальная дата».
Примеры для Excel 2007-2016:
- Последний день текущего месяца от текущей даты:
=КОНМЕСЯЦА(СЕГОДНЯ();0)
- Последний день прошлого месяца от текущей даты:
=КОНМЕСЯЦА(СЕГОДНЯ();-1)
- Последний день текущего месяца предыдущего года от текущей даты:
=КОНМЕСЯЦА(СЕГОДНЯ();-12)
- Последний день месяца от произвольной даты, записанной в ячейку «A1»:
=КОНМЕСЯЦА(A1;0)
Функция «КОНМЕСЯЦА» возвращает значение в числовом виде, поэтому для правильного отображения последнего дня месяца следует к ячейке с формулой применить формат даты.
В версиях Excel по 2003 год функция «КОНМЕСЯЦА» по-умолчанию отсутствует, поэтому будем применять формулу, составленную, как и для первого дня месяца, из функций «ДАТА», «ГОД» и «МЕСЯЦ».
Примеры для Excel 2000-2003:
- Последний день текущего месяца от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;0)
- Последний день прошлого месяца от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ());0)
- Последний день текущего месяца предыдущего года от текущей даты:
=ДАТА(ГОД(СЕГОДНЯ())-1;МЕСЯЦ(СЕГОДНЯ())+1;0)
- Последний день месяца от произвольной даты, записанной в ячейку «A1»:
=ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)
Не перепутайте в этих формулах вычитаемое или добавляемое количество месяцев, так как для определения последнего дня месяца, содержащегося в исходной дате, приходится текущий месяц увеличивать на единицу, чтобы вернуться к последнему дню из следующего месяца, указав количество дней равное нулю.
Как вариант, для определения последнего дня месяца можно использовать формулу, возвращающую первый день следующего месяца, из значения которой вычитается единица: =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;1)-1
Определение первого и последнего дня месяца имеет большую актуальность для автоматического заполнения интервала дат в диалоговых формах с помощью VBA Excel.
Помогите,пжлста,кто знает:в одной ячейке задана текущая дата,например,20.05.2010г.С помощью каких формул можно добиться,чтобы в другой ячейке появилась дата 01.05.2010г.? |
|
Haken Пользователь Сообщений: 495 |
=КОНМЕСЯЦА(A1;-1)+1 A1 — ячейка с текущей датой |
не забудтьте активировать надстройку пакет анализа |
|
DV_68 Пользователь Сообщений: 628 |
Если не подключен пакет анализа, то можно так: |
Serge Пользователь Сообщений: 11308 |
Можно и с извращениями =ТЕКСТ(«01″&».»&МЕСЯЦ(A1)&».»&ГОД(A1);»ДД.ММ.ГГГГ») 20.05.2010 в А1. |
слэн Пользователь Сообщений: 5192 |
или =(«01.»&ТЕКСТ(a1;»ММ.ГГГГ»))+0
|
Пока писал, слэн опередил =СЦЕПИТЬ(«01.»;(ЕСЛИ(МЕСЯЦ(A1)<10;СЦЕПИТЬ(«0″;МЕСЯЦ(A1));МЕСЯЦ(A1)));».»;ГОД(A1)) |
|
Извините за … флуд. Жалко редактировать нельзя. «Serge 007 и слэн» |
|
слэн Пользователь Сообщений: 5192 |
{quote}{login=Serge 007}{date=21.05.2010 01:21}{thema=}{post}Можно и с извращениями =ТЕКСТ(«01″&».»&МЕСЯЦ(A1)&».»&ГОД(A1);»ДД.ММ.ГГГГ») 20.05.2010 в А1.{/post}{/quote} ну это уж слишком тогда уж =дата(год(a1);месяц(a1);1) |
vikttur Пользователь Сообщений: 47199 |
|
Serge Пользователь Сообщений: 11308 |
{quote}{login=ТолькоУчусь}{date=21.05.2010 01:30}{thema=}{post}Извините за … флуд. Жалко редактировать нельзя. ЗЫ А в чём флуд? |
Serge Пользователь Сообщений: 11308 |
{quote}{login=vikttur}{date=21.05.2010 01:34}{thema=}{post}Кто больше? Макросом? :){/post}{/quote}Есть такая игра «Поддавки» ЗЫ Слэн, с извращениями не нравится? :-))) |
Serge 007, скорее это галантность Никого не хочу обидеть, но мне мой вариант больше нравится |
|
vikttur Пользователь Сообщений: 47199 |
По поводу пятницы — форуму остро не хватает функции =КОНРАБНЕД() |
слэн Пользователь Сообщений: 5192 |
или КОНЬРАБНЕД() — типа пусть кони работают.. или не работают — т.е. дохнут |
Serge Пользователь Сообщений: 11308 |
{quote}{login=слэн}{date=21.05.2010 01:57}{thema=}{post}или КОНЬРАБНЕД() — типа пусть кони работают.. или не работают — т.е. дохнут{/post}{/quote}Надеюсь фанов ЦСКА на форуме нет? :-))) ЗЫ Микки за коней как-раз болел… |
{quote}{login=тухачевский}{date=21.05.2010 01:15}{thema=}{post}не забудтьте активировать надстройку пакет анализа |
|
{quote}{login=DV}{date=21.05.2010 01:16}{thema=}{post}Если не подключен пакет анализа, то можно так: |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
Сервис — Надстройки (2003) |
vikttur Пользователь Сообщений: 47199 |
Сервис-Надстройки. Если в списке есть Пакет анализа, поставить галку |
Tany Гость |
#21 22.05.2010 16:08:54 Спасибо огромное всем! |
Я уже тут писал о том, как получить первое число месяца в Transact-SQL. Сейчас напишу как это сделать в Excel’e.
Существуют много способов сделать это. Мне нравятся два из них:
1) От исходной даты вычитаем номер дня в месяце – получаем последний день месяца предшествующий месяцу исходной даты. К этому результату прибавляем один день. Эта дата и будет нашим результатом. Формула для этого способа: “=A1-ДЕНЬ(A1)+1″.
2) С помощью функции ДАТА(год;месяц;день) и из составляющих исходной даты (год и месяц) получаем первое число: “=ДАТА(ГОД(A1);МЕСЯЦ(A1);1)”.
В этой статье мы посмотрим как по дате можно вернуть первое число данного месяца в Excel.
В комментариях к данной статье дали 2 более удобных способа:
=ДАТА(ГОД(E7);МЕСЯЦ(E7);1)
=КОНМЕСЯЦА(E7;-1)+1
То есть, например у нас есть ячейка с произвольной датой — например 30.08.2016. Нам необходимо по данной дате с помощью формул найти 01.08.2016 года. Стандартными способами я не нашел как это можно сделать. Можно по дате найти месяц, а вот первое число данного месяца нет.
В комментария задали вопрос, который и сподвиг написать данную статью о том как найти первое число месяца по дате.
Добрый день. Как написать формулу, где в двух ячейках нужно указать начало месяца и конец этого месяца, конец месяца он берет автоматически из другой ячейки (то есть она уже задаётся). Написал формулу ячейки дата -30, но когда в месяце 30 дней это формула не годиться (получается конец предыдущего месяца).
Решение задачи будет выглядеть следующим образом.
=ЗНАЧЕН("01."&ТЕКСТ(A1;"ММ")&"."&ТЕКСТ(A1;"ГГГГ"))
Где в A1 — дата, по которой нам необходимо определить 1 число этого месяца.
Суть решения задачи следующая:
1. Находим месяц указанной даты. Указав «ММ» — мы найдем месяц в формате двух чисел. Так, например август месяц будет 08, а не просто 8
ТЕКСТ(A1;"ММ")
2. Находим год указанной даты в формате 4-х чисел. В нашем случае это 2016
ТЕКСТ(A1;"ГГГГ")
3. С помощью знака & склеиваем первое число месяца 01 с полученными данными
01.+08+"."+2016
В итоге мы получаем 01.08.2016 — но это еще только текст. Чтобы он преобразовался в дату. Выражение нужно вставить в функцию ЗНАЧЕН()