Jim muss das Datum in einer bestimmten Zelle um einen Monat um Mitternacht am 14./15 eines jeden Monats (00:00:00 am 15.) vorverlegen, und er fragte sich, wie es gemacht werden könnte.

Wie bei vielen Problemen in Excel hängt die Antwort von der Art der beteiligten Daten und genau dem ab, was Sie tun möchten. Wenn das Datum in der Zelle das heutige Datum ist und Sie einfach möchten, dass die Zelle den aktuellen Monat bis zum 14. und danach im nächsten Monat anzeigt, können Sie eine Formel wie die folgende verwenden:

=CHOOSE(IF(DAY(NOW())>14,MONTH(NOW())+1,MONTH(NOW())), "January","February","March","April","May","June", "July","August","September","October","November", "December","January")

Diese Formel gibt den Namen eines Monats und kein Datum zurück. Wenn Sie ein Datum zurückgeben möchten, können Sie die folgende Formel verwenden:

=IF(DAY(NOW())>14,DATEVALUE(IF(MONTH(NOW())=12,1, MONTH(NOW())+1) & "/" & DAY(NOW()) & "/" & IF(MONTH( NOW())=12,YEAR(NOW())+1,YEAR(NOW()))),NOW())

Beide Formeln berücksichtigen das „Wrap-Around zum Jahresende“, wenn Sie von Dezember bis Januar vorrücken. Eine kürzere Version dieser letzten Formel kann erstellt werden, wenn Sie die DATE-Funktion anstelle der DATEVALUE-Funktion verwenden:

=DATE(YEAR(NOW()),MONTH(NOW())+((DAY(NOW())>14)*1),1)

Diese Formel gibt im Gegensatz zum Beispiel DATEVALUE immer ein Datum zurück, das der erste Tag eines bestimmten Monats ist.

Wenn Sie den Wert eines bestimmten Datums in einer Zelle wirklich erhöhen möchten, müssen Sie ein Makro verwenden, um die Aufgabe auszuführen. Außerdem müssen Sie sicherstellen, dass das Makro nur einmal im Monat zu einer bestimmten Zeit an einem bestimmten Tag ausgeführt wird. Wenn Sie beispielsweise möchten, dass das Makro am 15. eines jeden Monats um 00:00:00 Uhr ausgeführt wird, müssen Sie das Makro so einrichten, dass es Datum und Uhrzeit überprüft und dann zu diesem bestimmten Datum und dieser bestimmten Uhrzeit ausgeführt wird. Sie müssen auch sicherstellen, dass die Arbeitsmappe mit dem Makro zu diesem Zeitpunkt geöffnet war.

Das folgende Makro ruft das Datum aus einer Zelle ab und erhöht es um einen Monat. Das Makro setzt voraus, dass Sie einen benannten Bereich, DateCell, haben, der sich auf die zu aktualisierende Zelle bezieht.

Sub IncreaseMonth()

Dim dDate As Date     dDate = Range("DateCell").Value     Range("DateCell").Value = _       DateSerial(Year(dDate), _       Month(dDate) + 1, Day(dDate))

End Sub

Um sicherzustellen, dass das Makro zum richtigen Zeitpunkt ausgeführt wird, benötigen Sie ein anderes Makro. Das folgende Makro kann ausgeführt werden, wenn die Arbeitsmappe geöffnet wird:

Private Sub Workbook_Open()

If Day(Now) = 14 Then     Application.OnTime ("23:59:59"), "IncreaseMonth"

End If End Sub

Beachten Sie, dass dieses spezielle Makro die OnTime-Methode so festlegt, dass das IncreaseMonth-Makro am 14. um 23:59:59 Uhr ausgeführt wird. Dieses Datum und diese Uhrzeit wurden gewählt, da es leichter zu fangen ist als am 15. um 00:00:00 Uhr.

Denken Sie daran, dass das IncreaseMonth-Makro nur ausgeführt wird, wenn Sie die Arbeitsmappe am 14. öffnen und die Arbeitsmappe dann bis zum 15. geöffnet lassen.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (11751) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: