Автоматически продвигается на месяц

Джиму необходимо продвигать дату в определенной ячейке на один месяц в полночь 14/15 каждого месяца (00:00:00 15-го числа), и он задавался вопросом, как это можно сделать.

Как и во многих других проблемах в Excel, ответ зависит от характера задействованных данных и от того, что именно вы хотите сделать. Если дата в ячейке является сегодняшней датой, и вы просто хотите, чтобы в ячейке отображался текущий месяц до 14-го числа, а затем следующий месяц после этого, то вы можете использовать следующую формулу:

= ВЫБРАТЬ (ЕСЛИ (ДЕНЬ (СЕЙЧАС ())> 14, МЕСЯЦ (СЕЙЧАС ()) + 1, МЕСЯЦ (СЕЙЧАС ())), «Январь», «Февраль», «Март», «Апрель» , «Май», «июнь», «июль», «август», «сентябрь», «октябрь», «ноябрь», «декабрь», «январь»)

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

= IF (DAY (NOW ())> 14, DATEVALUE (IF (MONTH (NOW ()) = 12,1 , МЕСЯЦ (СЕЙЧАС ()) + 1) & «/» & ДЕНЬ (СЕЙЧАС ()) & «/» & ЕСЛИ (МЕСЯЦ (СЕЙЧАС ()) = 12, ГОД (СЕЙЧАС ()) + 1, ГОД (СЕЙЧАС ( )))), NOW ())

Обе эти формулы учитывают «циклический переход к концу года» при переходе с декабря на январь. Более короткая версия этой последней формулы может быть создана, если вы используете функцию ДАТА вместо функции ДАТАЗНАЧ:

= ДАТА (ГОД (СЕЙЧАС ()), МЕСЯЦ (СЕЙЧАС ()) + (( ДЕНЬ (СЕЙЧАС ())> 14) * 1), 1)

Эта формула, в отличие от примера ДАТАЗНАЧЕНИЕ, всегда возвращает дату, которая является первым днем ​​любого заданного месяца.

Если вы действительно хотите увеличить значение определенной даты в ячейке, вы должны использовать макрос для выполнения этой задачи. Кроме того, вы должны убедиться, что макрос запускается только один раз в месяц, в определенное время в определенный день. Например, если вы хотите, чтобы макрос запускался в 00:00:00 15 числа каждого месяца, вам необходимо настроить макрос так, чтобы он проверял дату и время, а затем запускался в эту конкретную дату и время. Вам также необходимо убедиться, что книга, содержащая макрос, была открыта в указанную дату и время.

Следующий макрос будет извлекать дату из ячейки и увеличивать ее на месяц. Макрос предполагает, что у вас есть именованный диапазон DateCell, который указывает на обновляемую ячейку.

Sub IncreaseMonth () Dim dDate As Date dDate = Range («DateCell»). Диапазон значений ( «DateCell»). Value = _ DateSerial (Year (dDate), _ Month (dDate) + 1, Day (dDate)) End Sub

Чтобы убедиться, что макрос запускается в нужное время , вам понадобится другой макрос. Следующий макрос предназначен для запуска при каждом открытии книги:

Private Sub Workbook_Open () If Day (Now) = 14 Then Application.OnTime («23:59:59″), » IncreaseMonth «End IfEnd Sub

Обратите внимание, что этот конкретный макрос устанавливает метод OnTime таким образом, чтобы он запускал макрос IncreaseMonth в 23:59:59 14 числа.. Эта дата и время были выбраны, потому что их легче поймать, чем 00:00:00 15-го числа.

Помните, что макрос IncreaseMonth будет запускаться только в том случае, если вы откроете книгу 14-го числа, и затем оставьте книгу открытой до 15 числа.

Источник: frestage.ru

Бытовой вопрос