2017-10-07 2 views
-1

Ich habe ein Blatt (Sheet1), wobei Spalte i ein Datumsfeld ist. Ich möchte ein Makro erstellen, das nach Eingabe des Startdatums und des Enddatums fragt, diese Daten in zwei Zellen ablegt, z. B. i38, i39, und dann mit diesen Daten in diesen Zellen filtern. Ist das möglich?Erworben oder Autofilter auf Datumsbereich von Zelldaten

Ich bin neu in Makros und VB, und kann nicht herausfinden, wie Sie Zellendaten in einem datumsbasierten Filter verwenden.

Danke für jede Hilfe.

Antwort

0

beginnen mit:

enter image description here

diese ausgeführt wird:

Sub FilterDateRange() 
    Dim d1 As String, d2 As String, r As Range 
    Set r = Range("I1:I26") 

    d1 = ">" & Application.InputBox(Prompt:="enter start date", Type:=2) 
    d2 = "<" & Application.InputBox(Prompt:="enter start date", Type:=2) 

    r.AutoFilter 
    r.AutoFilter Field:=1, Criteria1:=d1, Operator:=xlAnd, Criteria2:=d2 

    Range("I38") = Mid(d1, 2) 
    Range("I39") = Mid(d2, 2) 
End Sub 

produzieren kann:

enter image description here

EDIT # 1:

Um umfassen die Endpunkte (nicht nur zwischen den Endpunkten), diese Zeilen Code verwenden:

d1 = ">=" & Application.InputBox(Prompt:="enter start date", Type:=2) 
d2 = "<=" & Application.InputBox(Prompt:="enter start date", Type:=2) 
+0

Awesome, ich werde bald versuchen. Wenn es sich um eine riesige Datei handelt, gibt es eine Möglichkeit, die Spalte i von oben nach unten auszuwählen, anstatt den Bereich zu verwenden? Und anstatt die Eingänge in eine Zelle zu installieren, ist es möglich, sie einfach im Code zu verwenden, ohne sie aufzuzeichnen? Ich habe vergessen, wie groß die eigentliche Datei ist, die diesen Filter benötigt. Und die Größe variiert jeden Monat. – 12fretter

+0

@ 12fretter Um die gesamte Spalte zu filtern, benutzen Sie diese Zeile. *** Setzen Sie r = Range ("I: I") *** anstelle der geposteten Zeile ............ und dann die letzten zwei Codezeilen über dem *** End Sub *** –

+0

PERFEKT! Ich danke dir sehr. – 12fretter

Verwandte Themen