Datum suchen in anderem Blatt
Schritt-für-Schritt-Anleitung
Um ein Datum in einem anderen Blatt zu suchen und bestimmte Zellen zu ändern, kannst du den folgenden VBA-Code verwenden. Dieser Code sucht nach einem Datum in Blatt 2, das in Blatt 1 (F6) angegeben ist, und ersetzt Formeln in bestimmten Zellen durch ihre Werte.
- Öffne dein Excel-Arbeitsblatt.
- Drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (dein Dokument)" > Einfügen > Modul.
- Kopiere den folgenden Code in das Modul:
Sub DatumSuchenUndErsetzen()
Dim zelle As Range
With Worksheets("Blatt2").Range("A8:A19")
Set zelle = .Find(Sheets("START").Range("F6").Value, LookIn:=xlValues, lookat:=xlWhole)
If Not zelle Is Nothing Then
zelle.Offset(0, 3) = zelle.Offset(0, 3)
zelle.Offset(0, 7) = zelle.Offset(0, 7)
zelle.Offset(0, 11) = zelle.Offset(0, 11)
zelle.Offset(0, 15) = zelle.Offset(0, 15)
zelle.Offset(0, 19) = zelle.Offset(0, 19)
End If
End With
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus:
ALT + F8
, wähle DatumSuchenUndErsetzen
und klicke auf "Ausführen".
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode, um über mehrere Blätter zu suchen, ist die Verwendung eines Arrays, das die Namen der Blätter enthält. Hier ein Beispiel:
Sub SucheInMehrerenBlättern()
Dim blaetter As Variant
Dim wks As Worksheet
Dim zelle As Range
blaetter = Array("932V", "933V", "923V", "954V", "932P", "933P", "923P", "954P", "959P")
Application.ScreenUpdating = False
For Each wks In Worksheets
For n = LBound(blaetter) To UBound(blaetter)
If wks.Name = blaetter(n) Then
With wks.Range("A8:A19")
Set zelle = .Find(Sheets("START").Range("F6").Value, LookIn:=xlValues, lookat:=xlWhole)
If Not zelle Is Nothing Then
zelle.Offset(0, 3) = zelle.Offset(0, 3)
End If
End With
End If
Next n
Next wks
Application.ScreenUpdating = True
End Sub
Praktische Beispiele
Wenn du den Code für 9 spezifische Blätter verwenden möchtest, kannst du die Blätter einfach in eine Schleife packen. Hier ist ein Beispiel, das funktioniert, wenn die Blätter in einer bestimmten Reihenfolge angeordnet sind:
Sub DurchlaufeBlätter()
Dim i As Long
Dim zelle As Range
Application.ScreenUpdating = False
For i = 3 To 11 ' Annahme: Blätter 3 bis 11 sind die relevanten Blätter
With Sheets(i).Range("A8:A19")
Set zelle = .Find(Sheets("START").Range("F6").Value, LookIn:=xlValues, lookat:=xlWhole)
If Not zelle Is Nothing Then
zelle.Offset(0, 3) = zelle.Offset(0, 3)
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
Tipps für Profis
- Nutze die
INDIREKT
-Funktion: Mit =INDIREKT("Tabelle1!F6")
kannst du eine Zelle in einem anderen Blatt referenzieren, ohne VBA verwenden zu müssen.
- Makros optimieren: Schalte
Application.ScreenUpdating
auf False
, um die Ausführungsgeschwindigkeit zu erhöhen, und aktiviere es am Ende wieder.
FAQ: Häufige Fragen
1. Wie kann ich sicherstellen, dass das Datum im richtigen Format vorliegt?
Überprüfe die Formatierung der Zelle in Blatt 1 und stelle sicher, dass sie mit der Formatierung der Datumsreihe in Blatt 2 übereinstimmt.
2. Kann ich die Suche auf eine bestimmte Zelle beschränken?
Ja, indem du den Bereich in .Find
anpasst, kannst du die Suche auf spezifische Zellen oder Bereiche begrenzen.
3. Was passiert, wenn das Datum nicht gefunden wird?
Der Code überspringt den Abschnitt, in dem Formeln ersetzt werden, wenn das Datum nicht gefunden wird. Es gibt keinen Fehler, aber es passiert auch nichts.