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

AutoFilter: Anzahl gefundene Kriterien ermitteln

Forumthread: AutoFilter: Anzahl gefundene Kriterien ermitteln

AutoFilter: Anzahl gefundene Kriterien ermitteln
14.08.2002 10:49:42
Jürgen
Hallo,

ich habe eine große Tabelle, die ich nach jedem Datum filtern möchte. Die gefilterten Daten werden in ein anderes Tabellenblatt kopiert.
Das Datum steht in Spalte A.
Die Datei enthält eine unbekannte Anzahl an unterschiedlichen Datumangaben.
Ich dachte, den AutoFilter irgendwie über eine Schleife zu setzen,
z.B.

Ihr seht, ich krieg's nicht gebacken.
Wäre dankbar, wenn mir jemand mit einem Tipp weiterhelfen könnte.

Gruß
Jürgen


Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: AutoFilter: Anzahl gefundene Kriterien ermitteln
14.08.2002 12:06:21
Charlie
Hallo, Jürgen!

Die Anzahl der mit dem Filterkriterium übereinstimmenden Datensätze kannst Du unabhängig vom tatsächlichen Filtervorgang einfach mit ZÄHLENWENN bzw. in VBA mit CountIf ermitteln:

Viel Erfolg,
Charlie

Anzahl Kriterien, nicht Anzahl Datensätze
14.08.2002 12:18:50
Jürgen
Hallo Charlie,

vielleicht habe ich mich falsch ausgedrückt. Ich suche nicht die Anzahl der mit dem Kriterium übereinstimmenden Datensätze, sondern die Anzahl der in der AutoFilter-Maske gefundenen Kriterien (oder Varianzen).
Beispiel:
Die Datei enthält 100 Datensätze zum Datum "08.01.2002", 200 Datensätze zum Datum "10.01.2002" und 300 Datensätze zum Datum "15.01.2002".
Ich suche die Anzahl der gefundenen Kriterien, hier also 3:
"08.01.2002", "10.01.2002" und "15.01.2002".
Bzw. ich suche eine andere Möglichkeit, in 3 Durchläufen die
Datensätze zu den einzelnen Daten zu filtern.
Bei der nächsten Datei können es z.B. 6 Kriterien, d.h. 6 unterschiedliche Tage mit einer Vielzahl von Datensätzen zu diesen 6 Tagen.

Weiß jemand, wie ich das lösen kann?

Danke und
Gruß
Jürgen

Anzeige
Re: Anzahl Kriterien, nicht Anzahl Datensätze
14.08.2002 15:19:32
Charlie
Hallo, Jürgen!

Hier eine hurtige Methode, um die Anzahl der im Kriterienbereich vorhandenen unterschiedlichen Werte zu zählen. Das Ergebnis kannst Du dann in Deiner Schleife verwenden, um die einzelnen Werte zu filtern oder sonstwas damit zu machen:

Dort wo ich "MsgBox NoDoubles.Item(intCounter)" eingefügt habe, kannst Du filtern, kopieren usw. Das Filterkriterium wäre z.B. wie in meinem Beispiel "NoDoubles.Item(intCounter)".

Viel Erfolg,
Charlie

Anzeige
Toll !!!
14.08.2002 15:43:13
Jürgen
Hallo Charlie,

wirklich toll, hätte ich nicht hingekriegt.
Ist genau das, was ich brauche.

Vielen Dank

Gruß
Jürgen

Re: Toll !!!
14.08.2002 15:58:16
Charlie
Hallo, Jürgen!

Bin happy, dass wir das Problem in den Griff gekriegt haben. Ich habe mich lange damit beschäftigt, weil ich auch schon öfter vor ähnlichen Probleme gestanden bin und dann immer mit Murkslösungen es geschafft habe, irgendwie die Kurve zu kriegen. Solange der Tabellenbereich nicht besonders groß ist, kann man sich mit dem AdvancedFilter und CountA bzw. Count helfen oder die Werte in ein Array einlesen, wobei man für jede Zelle püfen muss, ob der Wert schon im Array vorhanden ist und wenn nein, muss man das Array neu dimensionieren und den Wert einbinden. Das alles kostet enorm Zeit, wenn ein großer Bereich zu checken ist.

Diese Lösung ist mit einer Arraylösung vage vergleichbar, aber meiner Ansicht nach viel einfacher und vor allem beträchtlich schneller. Und der Zugriff auf die Elemente ist auch einfach.

Diesen Code werde ich mir überall sicher, wo ich nur kann, denn so etwas fällt zumindest mir (auch) nicht jeden Tag ein. ;)

Viel Spaß noch beim Filtern ;)
Charlie

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

AutoFilter: Anzahl gefundene Kriterien ermitteln


Schritt-für-Schritt-Anleitung

Um die Anzahl der gefundenen Kriterien im AutoFilter zu ermitteln, kannst du die folgende VBA-Lösung nutzen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)".
    • Wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub CountUniqueDates()
       Dim ws As Worksheet
       Dim uniqueDates As Collection
       Dim cell As Range
       Dim dateCount As Long
    
       Set ws = ThisWorkbook.Sheets("DeinTabellenblatt") ' Ändere den Blattnamen
       Set uniqueDates = New Collection
    
       On Error Resume Next
       For Each cell In ws.Range("A1:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
           If IsDate(cell.Value) Then
               uniqueDates.Add cell.Value, CStr(cell.Value)
           End If
       Next cell
       On Error GoTo 0
    
       dateCount = uniqueDates.Count
       MsgBox "Anzahl der gefundenen Kriterien: " & dateCount
    End Sub
  4. Führe das Makro aus, indem du im VBA-Editor auf F5 klickst oder das Makro über das Excel-Menü startest.

Mit diesem Skript kannst du die Anzahl der unterschiedlichen Datumsangaben in der Spalte A zählen. Das Ergebnis wird in einer MessageBox angezeigt.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler '9': Index außerhalb des gültigen Bereichs

    • Lösung: Stelle sicher, dass der Tabellenblattname korrekt im Code angegeben ist.
  • Fehler: Fehler beim Hinzufügen zur Collection

    • Lösung: Dies geschieht oft, wenn ein Datum bereits vorhanden ist. Achte darauf, dass du On Error Resume Next einsetzt, um diese Fehler zu ignorieren.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Excel-Funktionen nutzen:

  1. Verwende die Funktion ANZAHL2:

    • Diese Funktion zählt alle Zellen, die nicht leer sind. Du kannst sie in Kombination mit dem Filter verwenden, um die Anzahl der gefilterten Datensätze zu ermitteln.
  2. Nutze den erweiterten Filter:

    • Unter Daten > Erweiterter Filter kannst du die Daten filtern und dann die Anzahl der sichtbaren Zeilen manuell überprüfen.

Praktische Beispiele

Angenommen, du hast eine Tabelle mit verschiedenen Daten in Spalte A:

Datum
08.01.2002
10.01.2002
15.01.2002
08.01.2002
10.01.2002
  • Nach dem Ausführen des Makros wird angezeigt:
    Anzahl der gefundenen Kriterien: 3

Dies zeigt, dass es drei unterschiedliche Datumsangaben gibt.


Tipps für Profis

  • Verwende Application.WorksheetFunction.CountIf in VBA, um direkt die Anzahl der gefilterten Datensätze zu zählen.
  • Du kannst auch eine Benutzerform erstellen, um die Filterkriterien interaktiv auszuwählen und die Anzahl zu ermitteln.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der gefilterten Datensätze ohne VBA ermitteln? Du kannst die Funktion ANZAHL2 oder ZÄHLENWENN verwenden, um die Anzahl der sichtbaren Datensätze zu zählen.

2. Welche Excel-Version benötige ich für die VBA-Lösung? Die VBA-Lösung ist in allen modernen Excel-Versionen (Excel 2007 und neuer) verfügbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige