Datum subtrahieren in Excel: VBA-Lösungen
Schritt-für-Schritt-Anleitung
Um ein Datum in Excel um Monate, Tage oder Wochen zu subtrahieren, kannst Du VBA verwenden. Hier sind die Schritte, um ein Datum um 3 Monate zu subtrahieren:
-
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu starten.
-
Klicke auf Einfügen
> Modul
, um ein neues Modul zu erstellen.
-
Füge den folgenden Code ein, um das Datum um 3 Monate zu subtrahieren:
Sub Datum_minus_3_Monat()
Dim lZeile As Long
For lZeile = 2 To Range("A65536").End(xlUp).Row
Range("F" & lZeile).FormulaR1C1 = "=EDATUM(RC[-5],-3)"
Next lZeile
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Führe das Makro aus, um das Datum in Spalte F entsprechend zu aktualisieren.
Häufige Fehler und Lösungen
-
Problem: Excel zieht immer 30 Tage ab, anstatt den gesamten Monat.
- Lösung: Verwende die
EDATUM
-Funktion, um sicherzustellen, dass die Monatsgrenze korrekt behandelt wird.
-
Problem: Wenn das ursprüngliche Datum der letzte Tag eines Monats ist, wird das resultierende Datum nicht korrekt angezeigt.
- Lösung: Stelle sicher, dass Du die Formel
MONATSENDE
verwendest, um den letzten Tag des Monats zu ermitteln.
Alternative Methoden
Du kannst auch die Funktion DATE
nutzen, um ein Datum minus Monate zu berechnen. Hier ein Beispiel:
Function EDat(d As Date, m As Integer) As Date
EDat = DateSerial(Year(d), Month(d) - m, Day(d))
End Function
Diese Funktion subtrahiert die gewünschte Anzahl an Monaten vom angegebenen Datum.
Praktische Beispiele
Hier sind einige Beispiele für das Subtrahieren von Daten in Excel:
-
Datum minus 1 Tag:
Sub Datum_minus_1_Tag()
Dim lZeile As Long
For lZeile = 2 To Range("A65536").End(xlUp).Row
Range("B" & lZeile).Value = Range("A" & lZeile).Value - 1
Next lZeile
End Sub
-
Datum minus 3 Monate:
Sub Datum_minus_3_Monate()
Dim lZeile As Long
For lZeile = 2 To Range("A65536").End(xlUp).Row
Range("C" & lZeile).Value = EDat(Range("A" & lZeile).Value, 3)
Next lZeile
End Sub
-
Datum minus Wochen:
Sub Datum_minus_2_Wochen()
Dim lZeile As Long
For lZeile = 2 To Range("A65536").End(xlUp).Row
Range("D" & lZeile).Value = Range("A" & lZeile).Value - 14
Next lZeile
End Sub
Tipps für Profis
- Nutze
Option Explicit
am Anfang Deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
- Teste Deinen Code mit verschiedenen Datumsformaten, um sicherzustellen, dass er robust ist.
- Verwende
MsgBox
, um Debugging-Informationen anzuzeigen, wenn Du Probleme beim Ausführen Deines Codes hast.
FAQ: Häufige Fragen
1. Wie kann ich in Excel ein Datum um ein Jahr abziehen?
Du kannst die DATE
-Funktion verwenden, um ein Jahr zu subtrahieren:
Range("E" & lZeile).Value = DateAdd("yyyy", -1, Range("A" & lZeile).Value)
2. Was passiert, wenn ich ein Datum minus Monate abziehe und der Monat weniger Tage hat?
Excel passt das Ergebnis automatisch an, indem es das korrekte Datum im nächsten Monat verwendet.
3. Wie gehe ich vor, wenn ich mehrere Monate oder Tage von einem Datum abziehen möchte?
Du kannst die DateAdd
-Funktion verwenden, um flexibel Monate oder Tage abzuziehen.