Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nach Monat und Jahr filtern

Nach Monat und Jahr filtern
25.01.2017 10:01:07
Oisse
Hallo Zusammen,
in meiner Tabelle sind in einer Spalte Datumswerte enthalten mit Tag, Monat und Jahr.
Nun möchte ich aber die Filter per VBA so setzen können, dass ich nach Monat und Jahr filtern kann.
Ich dachte das würde in etwa so gehen, dass ich für Tag einen Platzhalter hernehmne, also "*", dann für Monat die Monatszahl verwende, also z.B. 02 und dann noch das Jahr.
In der Summe also: *.02.2016
Das funktioniert aber leider nicht.
Wie bitte muss der Code aussehen, dass ich nach Monat und Jahr filtern kann?
Bisher habe ich folgendes:
If wks_Aus.Cells(2, 19) = -1 Then
Da32 = "Februar" & wks_Aus.Cells(3, 3) 'in Zelle 3,3 steht das Jahr
End If
With wks_Art
.Range("AA1").AutoFilter 27, Array(Da31, Da32, Da33, Da34, Da35, Da36, Da37, Da38, Da39,  _
Da40, Da41, Da42), Operator:=xlFilterValues
End With

Danke
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Monat und Jahr filtern
25.01.2017 10:16:16
EtoPHG
Hallo Oisse,
Ein aussichtsloses Unterfangen bei deinem Kenntnis-Level und eine umfangreiche Auftragsarbeit, wenn die Anforderung nur genau für deinen Setup in VBA umgesetzt werden soll.
Die einfachste Lösung: Datenbereich in eine Tabelle (Datentabelle) umwandeln und Filter einschalten. Für Datumsspalten wird automatisch eine Filterung nach die Hierarchie Jahr-Monat-Tag angeboten.
Gruess Hansueli
Anzeige
AW: Nach Monat und Jahr filtern
25.01.2017 10:37:42
Max2
Keine Lösung, aber eine Möglichkeit wie du das Datum *.02.2017 in 02 2017 aufspalten kannst.
(Mit der Aufspaltung kann man dann auch weiter arbeiten)
Hier Beispiel Datei fürs visuelle.: https://www.herber.de/bbs/user/110862.xlsm
Vielleicht hilft es dir ja

Sub a()
Dim ws As Worksheet
Dim rng, c As Range
Dim jahr, monat As String
Dim i, anfang, ende As Long
Dim datum As String
Set ws = ThisWorkbook.Sheets(1)
With ws
i = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng = .Range(.Cells(1, 1), .Cells(i, 1))
For Each c In rng
If IsNumeric(Right(c.Value, 4)) Then
datum = c.Value
anfang = InStr(datum, "*.")
ende = Len(datum)
monat = Mid(datum, anfang + 2, 2)
jahr = Mid(datum, (anfang + 5), 4)
End If
c.Offset(, 1).Value = monat & "-" & jahr
Next c
End With
End Sub

Anzeige
AW: Nach Monat und Jahr filtern
25.01.2017 20:09:27
Tino
Hallo,
ermiitle doch einfach den Monatsanfang vom Datum und das Monatsende vom Datum.
Alles was >=Monatsanfang und <=Monatsende ist, ist gefiltert nach Monat und Jahr.
Dim RefDatum As Date
Dim vonFilterDatum As Long, bisFilterDatum As Long
'kann auch aus einer Zelle sein
RefDatum = Date
'Monatsanfang
vonFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum), 1)
'Monatsende
bisFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum) + 1, 0)
With wks_Art
.AutoFilter.Range.AutoFilter Field:=27, Criteria1:= _
">=" & vonFilterDatum, _
Operator:=xlAnd, _
Criteria2:="
Gruß Tino
Anzeige
wenn noch Uhrzeiten darin enthalten
25.01.2017 20:13:21
Tino
Hallo,
wenn noch Uhrzeiten eine rolle spielen, dann besser so.
Monatsende ist der erste Tag im Folgemonat und der Filter wird auf <Monatsende gesetzt.
Dim RefDatum As Date
Dim vonFilterDatum As Long, bisFilterDatum As Long
'kann auch aus einer Zelle sein
RefDatum = Date
'Monatsanfang
vonFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum), 1)
'Monatsende
bisFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum) + 1, 1)
With wks_Art
.AutoFilter.Range.AutoFilter Field:=27, Criteria1:= _
">=" & vonFilterDatum, _
Operator:=xlAnd, _
Criteria2:="
Gruß Tino
Anzeige
AW: wenn noch Uhrzeiten darin enthalten
25.01.2017 22:26:12
Oisse
Hallo Max2, Tino und EthoPH2
und vielen Dank, dass ihr euch mit meinem Problem befasst habt und Lösungsvorschläge unterbreitet habt.
Ich schätze das wirklich sehr.
Tut mir leid, dass ich mich jetzt erst melde, ging aber leider nicht eher.
Mittlerweile wurde eine andere Lösung gefunden, nämlich das Datum in diesem Format: JJJJ"_"MM zu speichern. Somit werden die Jahre und Monate filterbar. Es sollte nämlich einfach nur per Kontrollkästchen auswählbar sein, nach welchen Monaten gefiltert werden soll und nach welchen Jahren.
Das ist mit dieser Formatierung problemlos per Array möglich.
Habt also vielen Dank für eure Hilfe.
Herzliche Grüße
Oisse
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Nach Monat und Jahr filtern in Excel


Schritt-für-Schritt-Anleitung

Um in Excel nach Monat und Jahr zu filtern, kannst du verschiedene Methoden verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Daten vorbereiten: Stelle sicher, dass deine Datumswerte in einer Spalte korrekt formatiert sind.
  2. Tabelle erstellen: Wandle deinen Datenbereich in eine Excel-Tabelle um. Klicke dazu auf "Einfügen" > "Tabelle".
  3. Filter aktivieren: Aktiviere die Filteroption, indem du auf das Dropdown-Menü in der Kopfzeile deiner Datums-Spalte klickst.
  4. Monat und Jahr filtern: Wähle die Filteroption „Datum filtern“. Hier kannst du zwischen „Vor diesem Datum“, „Nach diesem Datum“ oder „Zwischen“ wählen, um spezifische Monate und Jahre auszuwählen.

Wenn du VBA verwenden möchtest, kannst du folgenden Code anpassen:

Dim RefDatum As Date
Dim vonFilterDatum As Long, bisFilterDatum As Long
RefDatum = Date
'Monatsanfang
vonFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum), 1)
'Monatsende
bisFilterDatum = DateSerial(Year(RefDatum), Month(RefDatum) + 1, 0)

With wks_Art
    .AutoFilter.Range.AutoFilter Field:=27, Criteria1:=">=" & vonFilterDatum, _
    Operator:=xlAnd, _
    Criteria2:="<=" & bisFilterDatum
End With

Häufige Fehler und Lösungen

  1. Fehler: Filter funktioniert nicht
    Lösung: Überprüfe, ob deine Datumswerte wirklich im Datumsformat und nicht als Text gespeichert sind.

  2. Fehler: Falsches Datum angezeigt
    Lösung: Stelle sicher, dass du die richtige Zeitzone und das richtige Datumsformat verwendest.

  3. Fehler: Kein Filter verfügbar
    Lösung: Vergewissere dich, dass der Datenbereich in eine Tabelle umgewandelt wurde, damit die Filteroptionen korrekt angezeigt werden.


Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch folgende Methoden verwenden:

  • Benutzerdefinierte Filter: Nutze die benutzerdefinierten Filter in Excel, um spezifische Monate auszuwählen.
  • Pivot-Tabellen: Erstelle eine Pivot-Tabelle, um nach Datum, Monat und Jahr zu filtern. Dies ermöglicht eine schnelle und flexible Analyse deiner Daten.
  • Daten in Monat und Jahr umwandeln: Nutze die Funktion TEXT, um die Datumswerte in ein Format zu konvertieren, das die Filterung erleichtert, z.B. =TEXT(A1, "yyyy_mm").

Praktische Beispiele

  • Beispiel 1: Um die Datumswerte in der Form „MM JJJJ“ darzustellen:
Sub Umwandeln()
    Dim ws As Worksheet
    Dim rng As Range, c As Range
    Set ws = ThisWorkbook.Sheets(1)
    Set rng = ws.Range("A1:A100") ' Beispielbereich anpassen

    For Each c In rng
        If IsDate(c.Value) Then
            c.Offset(0, 1).Value = Format(c.Value, "mm-yyyy")
        End If
    Next c
End Sub
  • Beispiel 2: Filtere alle Daten, die im Februar 2017 liegen:
With wks_Art
    .AutoFilter.Range.AutoFilter Field:=27, Criteria1:=">=01.02.2017", _
    Operator:=xlAnd, _
    Criteria2:="<01.03.2017"
End With

Tipps für Profis

  • Nutze die Power Query-Funktion in Excel, um komplexe Datenfilterungen durchzuführen.
  • Wenn du regelmäßig nach Monat und Jahr filtern musst, erstelle eine Makro-Schaltfläche, die den Filter automatisch anwendet.
  • Verwende Datenvalidierung mit Dropdown-Listen, um die Auswahl von Monaten und Jahren zu vereinfachen.

FAQ: Häufige Fragen

1. Wie kann ich in Excel nach einem bestimmten Monat filtern?
Du kannst die Filteroption „Datum filtern“ verwenden oder die Daten in einem benutzerdefinierten Format wie „MM JJJJ“ speichern.

2. Was ist die beste Methode, um Datumswerte in Excel zu filtern?
Die beste Methode hängt von deinen Anforderungen ab. Für einfache Datenfilterung ist die Tabelle mit aktiven Filtern ideal. Bei komplexeren Anforderungen kann VBA oder Power Query helfen.

3. Funktioniert das Filtern auch mit Uhrzeiten?
Ja, du kannst auch nach Uhrzeiten filtern. Achte darauf, dass du die Filterkriterien anpasst, um die Uhrzeit korrekt zu berücksichtigen.

4. Wie kann ich mehrere Monate gleichzeitig filtern?
Verwende die Array-Funktion im VBA-Code, um mehrere Monate oder Jahre gleichzeitig auszuwählen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige