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

Per VBA nach Zeitintervall filtern

Forumthread: Per VBA nach Zeitintervall filtern

Per VBA nach Zeitintervall filtern
28.10.2016 14:20:34
Birke
Hallo Freunde,
folgende Ausgangslage:
Gegeben ist ein komplettes Jahr in 15 min Schritten mit dazugehörigen Werten.
Datum/Uhrzeit // Werte
01.01.2011 00:15 // 3431
01.01.2011 00:30 // 15251
01.01.2011 00:45 // 234321
01.01.2011 01:00 // 3244
01.01.2011 01:15 // 24324
...
Diese Werte müssen nach Zeitintervallen gefiltert werden, allerdings sind diese Zeitintervalle nicht festgeschrieben, sondern werden immer über ein vorheriges Makro (MakroVorher) ermittelt.
MakroVorher spuckt mir Beispielsweise folgendes aus:
Start Ende
01:00 02:00
Wenn ich einfach im Excel-Menü auf Filtern gehe und Häkchen nur bei "1:00", "1:15", "1:30", "1:45" und "2:00" mache, filtert sich die Tabelle nach meinen Wunschwerten. Der Plan ist allerdings, dass sie dass automatisch macht, sobald MakroVorher durchgelaufen ist.
Gibts da eine Möglichkeit, per:
Range("$A$13:$D$35053").AutoFilter Field:=2, Criteria1:=Cells("Worksheets("Tabelle1").Cells(4, 3).Value") BIS Cells("Worksheets("Tabelle1").Cells(4, 4).Value") IN 15 MIN SCHRITTEN
?
Kann gerne auch etwas weniger elegant sein, solange es funktioniert ;)
Falls Ihr noch Rückfragen habt, jederzeit fragen.
Vielen Dank schonmal!
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Per VBA nach Zeitintervall filtern
28.10.2016 14:36:59
baschti007
Also bei mir geht das so
Gruß basti
.AutoFilter Field:=1, Criteria1:=">=01.01.2011 00:15", Operator:=xlAnd, Criteria2:="

AW: Per VBA nach Zeitintervall filtern
28.10.2016 15:10:19
baschti007
Also Hier noch mal wenn du es mit den Zellen machst
Gruß basti

DatumVon = Month(Range("F8").Value) & "/" & Day(Range("F8").Value) & "/" & Year(Range("F8"). _
Value) & " " & Format(Range("F8").Value, "hh:mm:ss")
DatumBis = Month(Range("G8").Value) & "/" & Day(Range("G8").Value) & "/" & Year(Range("G8"). _
Value) & " " & Format(Range("G8").Value, "hh:mm:ss")
Range("A1:A6").AutoFilter Field:=1, Criteria1:=">=" & DatumVon, Operator:=xlAnd, Criteria2:="

Anzeige
AW: Per VBA nach Zeitintervall filtern
28.10.2016 16:22:01
Birke
Danke Basti, sieht schon mal um einiges besser aus als der Mist den ich geschrieben hab!
Problem ist jetzt aber, dass er mir auf dass Zeitfenster von ersten Tag filtert...
Ich Brauche das entsprechende Zeitfenster von jedem Tag im Jahr in der gefilterten Liste!
Es soll praktisch nur nach der Uhrzeit gefiltert werden.
Ich hab deinen Code mal ein bisschen umgebaut, trotzdem funktionierts nicht -.-
Dein DatumVon und DatumBis sind jetzt Start und Ende
Gruß

Option Explicit
Sub Makro1()
Dim Wert As Double
Dim i As Long
Dim Start As Date
Dim Ende As Date
Start = Format(Range("C4").Value, "hh:mm")
Ende = Format(Range("D4").Value, "hh:mm")
Range("$B$13:$D$35053").AutoFilter Field:=2, Criteria1:=">=" & Start, Operator:=xlAnd,  _
Criteria2:="

Anzeige
AW: Per VBA nach Zeitintervall filtern
28.10.2016 16:33:18
Birke
Ok habs endlich, richtig blöder Fehler, nach dem ersten Tag war in der "Zeit"-Spalte immer ein verstecktes Datum von 1900 drin... Egal, funktioniert, vielen vielen Dank an Basti!
AW: Per VBA nach Zeitintervall filtern
28.10.2016 16:36:26
Bastian
Bitte bitte kein Problem
Gruß Basti
Anzeige
Anzeige

Infobox / Tutorial

VBA zur automatischen Filterung nach Zeitintervallen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Erstelle ein neues Modul durch einen Rechtsklick auf "VBAProject" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden VBA-Code ein, um das Filtern nach Zeitintervallen automatisch durchzuführen:
Option Explicit

Sub FilterNachZeitintervall()
    Dim Start As Date
    Dim Ende As Date

    ' Werte aus den Zellen lesen
    Start = Format(Worksheets("Tabelle1").Cells(4, 3).Value, "hh:mm")
    Ende = Format(Worksheets("Tabelle1").Cells(4, 4).Value, "hh:mm")

    ' Filter anwenden
    Range("$A$13:$D$35053").AutoFilter Field:=2, Criteria1:=">=" & Start, Operator:=xlAnd, Criteria2:="<=" & Ende
End Sub
  1. Stelle sicher, dass die Zeitwerte in den Zellen C4 und D4 im richtigen Format vorliegen.
  2. Führe das Makro FilterNachZeitintervall aus, um die Daten nach den angegebenen Zeitintervallen zu filtern.

Häufige Fehler und Lösungen

  • Problem: Excel filtert nur das erste Datum.

    • Lösung: Achte darauf, dass die Zeitwerte in der Spalte korrekt formatiert sind. Manchmal sind versteckte Datumswerte (z.B. 1900) der Grund für unerwartete Filtergebnisse.
  • Problem: Der Filter funktioniert nicht richtig.

    • Lösung: Überprüfe den Code auf mögliche Fehler bei der Angabe der Zellenbezüge oder der Filterkriterien.

Alternative Methoden

Wenn Du nach einer anderen Möglichkeit suchst, die Excel-Uhrzeit in 15 Minuten Schritten zu filtern, kannst Du auch Pivot-Tabellen verwenden. Mit einer Pivot-Tabelle kannst Du Zeitintervalle einfach gruppieren und analysieren, ohne VBA zu verwenden.

  1. Markiere Deine Daten und gehe zu „Einfügen“ > „PivotTable“.
  2. Ziehe die Zeitspalte in den Zeilenbereich und wähle „Gruppieren“ > „Minuten“ und setze die Intervalle auf 15 Minuten.

Praktische Beispiele

Hier ist ein einfaches Beispiel, um die Filterung nach Uhrzeiten zu verdeutlichen:

Angenommen, Deine Daten sind in der Tabelle wie folgt:

Datum/Uhrzeit Werte
01.01.2011 00:15 3431
01.01.2011 00:30 15251
01.01.2011 00:45 234321
01.01.2011 01:00 3244
01.01.2011 01:15 24324

Wenn Du das Zeitintervall von 00:15 bis 01:00 filtern möchtest, setze die Zellen C4 und D4 auf diese Werte und führe das Makro aus.


Tipps für Profis

  • Verwende benannte Bereiche für die Start- und Endzeiten, um Deinen Code übersichtlicher zu gestalten.
  • Teste den VBA-Code regelmäßig, um sicherzustellen, dass er mit verschiedenen Zeitintervallen korrekt funktioniert.
  • Berücksichtige die Zeitzone, wenn Du mit Zeitdaten arbeitest, um Verwirrung zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich den Filter auf mehrere Zeitintervalle gleichzeitig anwenden? Du kannst mehrere Kriterien in Criteria1 und Criteria2 angeben, jedoch ist dies in VBA etwas komplizierter. In solchen Fällen könnte eine Schleife oder eine dynamische Kriterienliste hilfreich sein.

2. Was mache ich, wenn die Zeitwerte nicht korrekt gefiltert werden? Überprüfe das Format der Zellen in der Zeitspalte. Sie sollten als "Uhrzeit" formatiert sein, um sicherzustellen, dass der Filter korrekt funktioniert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige