Перенос дат в прошлый месяц (Microsoft Excel)
Кэти нужна формула, которая изменит любую дату в текущем месяце на последний день предыдущего месяца. Она также отмечает, что было бы полезно иметь макрос VBA, который мог бы делать это с датами в диапазоне выбранных ячеек.
На самом деле существует несколько различных шаблонных подходов, которые можно использовать для определения желаемой даты. Эти два являются самыми короткими и простыми в использовании:
=A1-DAY(A1) =EOMONTH(A1,-1)
Первый работает, потому что «день 0» текущего месяца всегда считается последним днем предыдущего месяца. Таким образом, если дата в ячейке A1 — 25.09.20, вы вычитаете 25 (значение ДНЯ) из этого дня, давая дату 20.09.20 или 31.08.20.
Вторая формула работает из-за включения второго параметра для функции EOMONTH. Этот параметр используется, чтобы указать, сколько месяцев в прошлом (отрицательном) или будущем (положительном) следует рассчитать до конца месяца.
В любом случае вам может потребоваться отформатировать ячейку, содержащую формулу, как дату. Если вы этого не сделаете, то, возможно, вы увидите базовый серийный номер, используемый Excel для расчета дат.
Если вам нужен макрос, который фактически преобразует даты в выбранном диапазоне в последний день предыдущего месяца, следующее поможет.
Sub LastDayPreviousMonth() Dim rCell As Range For Each rCell In Selection If IsDate(rCell) And Not rCell.HasFormula Then rCell.Value = WorksheetFunction.EoMonth(rCell.Value, -1) End If Next rCell End Sub
Макрос проходит через каждую ячейку в выбранном диапазоне и проверяет, содержит ли она дату и не является ли она формулой. (Другими словами, если дата в ячейке является результатом формулы, формула не изменяется.)
Затем функция EOMONTH используется, как описано ранее, для вычисления желаемой даты.
Следует отметить, что макро-подход также преобразует текстовые даты. Например, если ячейка содержит в виде текста дату «15.06.20,»
тогда макрос изменит его на 5/30/20. Как только скорректированная дата будет вставлена обратно в ячейку, она будет отображаться как серийный номер даты / времени, а не как текст.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13304) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.