Hallo,
das folgende Makro gehört in ein Standardmodul deiner Tabelle:
Sub Datum_filtern()
Dim strBlattname As String
Dim Zeitraum As Variant
Dim arrZeitraum As Variant
Dim arrDaten As Variant
Dim i As Integer
Dim bExists As Boolean
Dim lngZaehler As Long
Dim s As Integer
'Name für das Ausgabeblatt festlegen
strBlattname = "Ergebnis Auswertung"
'Abfrage des Zeitraums
Zeitraum = InputBox("Bitte den gesuchten Eingeben! Bsp: 01.01.2019-15.01.2019", "Eingabe Zeitraum")
'Datum wird zerlegt
arrZeitraum = Split(Zeitraum, "-")
'Daten werden eingelesen
With ActiveSheet
arrDaten = .Range(.Cells(1, 1), Cells(.Cells(Rows.Count, 3).End(xlUp).Row, 11))
End With
'Prüfen, ob Blatt für die Ausgabe vorhanden ist
For i = 1 To ThisWorkbook.Worksheets.Count
If Worksheets(i).Name = strBlattname Then
bExists = True
Exit For
End If
Next i
'Falls Arbeitsblatt für Ausgabe existiert, dann Inhalte löschen
If bExists = True Then
With Worksheets(strBlattname)
.UsedRange.ClearContents
End With
Else
'falls nicht, wird Arbeitsblatt angelegt
'neues Blatt wird am Ende eingefügt
Worksheets.Add After:=Worksheets(Worksheets.Count)
'neues Blatt benennen
ActiveSheet.Name = strBlattname
End If
'Überschriften werden in Zielblatt geschrieben
With Worksheets(strBlattname)
For i = 1 To 11
.Cells(1, i) = arrDaten(1, i)
Next i
'Zähler für Einfügezeile festlegen
lngZaehler = 2
'nun Datum aus Datensätzen vergleichen und übereinstimmende Datensätze in Zielblatt schreiben
For i = LBound(arrDaten, 1) To UBound(arrDaten, 1)
If Format(arrDaten(i, 3), "dd.mm.yyyy") >= Format(arrZeitraum(0), "dd.mm.yyyy") And Format(arrDaten(i, 3), "dd.mm.yyyy") <= Format(arrZeitraum(1), "dd.mm.yyyy") Then
For s = 1 To 11
.Cells(lngZaehler, s) = arrDaten(i, s)
Next s
lngZaehler = lngZaehler + 1
End If
Next i
'auf Auswertungsseite wechseln
.Activate
End With
End Sub
Das Makro muss aus der Tabelle gestartet werden, in der die zu filternden Daten stehen.
Gruß
M.O.