Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Anzahl unterschiedlicher Werte mit VBA ermitteln

Anzahl unterschiedlicher Werte mit VBA ermitteln
12.03.2009 15:00:44
Holger
Hallo Leute,
ich habe jetzt den ganzen Tag Archive studiert, Threads gelesen, gegoogelt... ich finde nicht die richtige Lösung (die ganz sicher total einfach ist).
Ich bekommen eine Liste mit vier Spalten und mehr als 50.000 Datensätzen im folgenden Format:
Verkäufername...... Auftragsnummer.....Email.......Telefon....
Pro verkauftem Artikel wird eine Zeile generiert, sind in einem Auftrag z.B. 2 Artikel, hat der Auftrag Nr. 12345 zwei Zeilen. Die Auftragsnummer tritt entsprechend der Artikelanzahl mehrfach auf. Hat der Verkäufer eine Emailadresse angegeben, so steht sie entsprechend der Anzahl der Artikelanzahl auch in mehren Zeilen - Analog die Telefonnummer. Zur Vereinfachung schaut Euch bitte die Beispieltabelle an:

Die Datei https://www.herber.de/bbs/user/60244.xls wurde aus Datenschutzgründen gelöscht


Meine Problemstellung ist: Ich muß mit VBA (in Variable) ermitteln:
1.) wieviele Aufträge jeder Verkäufer gemacht hat (Also wieviele unterschiedliche Auftragsnummern je Verkäufer)
2.) wieviele (unterschiedliche) Telefonnummern sind eingetragen je Verkäufer
3.) wieviele (unterschiedliche) eMailadressen sind eingetragen je Verkäufer
Aufgrund der riesigen Datenmenge funktionieren die Worksheetfunktionen (=ZAEHLEWENN, etc) nicht. Auch Pivots haben nicht funktionert. Wie ist das mit VBA zulösen?
Vielen Dank für Eure Hilfe
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anzahl unterschiedlicher Werte mit VBA ermitteln
13.03.2009 09:29:50
schauan
Hallo Holger,
welche Worksheetfunction funktioniert mit geringeren Datenmengen, bei welcher Datenmenge ist Schluss? Du könntest ja dann die Bereiche an passender Stelle teilen und die Ergebnisse addieren.
Gruß, Andre
AW: Anzahl unterschiedlicher Werte mit VBA ermitteln
13.03.2009 09:45:37
fcs
Hallo Holger,
ich schlage hier eine Kombination von VBA und Pivot-Tabelle vor. Eine reine VBA-Lösung ist natürlich auch möglich, aber nach meiner Einschätzung bei der Datenmenge deutlich langsamer.
Per VBA werden die Daten so aufbereitet, dass eine Pivot-Auswertung möglich ist.
Hier deine Datendatei entsprechend aufbereitet.
https://www.herber.de/bbs/user/60277.xls
Gruß
Franz
Anzeige
AW: Anzahl unterschiedlicher Werte mit VBA ermitteln
13.03.2009 12:32:31
Holger
Hallo Franz,
das ist brilliant! Ich habe zwar das Script noch nicht so ganz begriffen, werde es mir aber nochmal genauer ansehen. Fakt ist aber: Es funktioniert! Ich habe gerade mal 10.000 Testdaten probiert und es ist schnell und richtig!
Vielen Dank, das ist wirklich super!
Schönes WE,
Holger
PS. Andre, auch Dir danke für Deine Hilfe! :-)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Anzahl unterschiedlicher Werte in Excel mit VBA ermitteln


Schritt-für-Schritt-Anleitung

Um die Anzahl unterschiedlicher Werte in einer großen Excel-Tabelle zu ermitteln, kannst Du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

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

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Sub AnzahlUnterschiedlicherWerte()
        Dim ws As Worksheet
        Dim Verkäufer As Range
        Dim UniqueAufträge As Collection
        Dim UniqueTelefonnummern As Collection
        Dim UniqueEmails As Collection
        Dim cell As Range
    
        Set ws = ThisWorkbook.Sheets("DeinBlattname") ' Ersetze "DeinBlattname" mit dem Namen Deines Arbeitsblattes
        Set UniqueAufträge = New Collection
        Set UniqueTelefonnummern = New Collection
        Set UniqueEmails = New Collection
    
        On Error Resume Next ' Ignoriert Fehler bei doppelten Einträgen
    
        For Each cell In ws.Range("B2:B50001") ' Spalte mit Auftragsnummern
            UniqueAufträge.Add cell.Value, CStr(cell.Value)
        Next cell
    
        For Each cell In ws.Range("D2:D50001") ' Spalte mit Telefonnummern
            UniqueTelefonnummern.Add cell.Value, CStr(cell.Value)
        Next cell
    
        For Each cell In ws.Range("C2:C50001") ' Spalte mit Emailadressen
            UniqueEmails.Add cell.Value, CStr(cell.Value)
        Next cell
    
        MsgBox "Anzahl unterschiedlicher Aufträge: " & UniqueAufträge.Count & vbCrLf & _
               "Anzahl unterschiedlicher Telefonnummern: " & UniqueTelefonnummern.Count & vbCrLf & _
               "Anzahl unterschiedlicher Emailadressen: " & UniqueEmails.Count
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro über Entwicklertools > Makros aus und wähle AnzahlUnterschiedlicherWerte.

Dieser Code zählt die unterschiedlichen Werte in den entsprechenden Spalten und zeigt sie in einer Nachricht an.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht definiert"

    • Stelle sicher, dass Du alle notwendigen Variablen korrekt deklariert hast.
  • Problem: Makro funktioniert nicht für große Datenmengen

    • Wenn Deine Datenmenge größer ist, kann es sinnvoll sein, die Daten in kleinere Bereiche zu unterteilen und die Ergebnisse zu addieren.
  • Fehler bei der Ausführung: "Index außerhalb des Bereichs"

    • Überprüfe, ob die von Dir angegebenen Zellbereiche korrekt sind und die Daten tatsächlich dort vorhanden sind.

Alternative Methoden

Falls Du keine VBA-Lösung verwenden möchtest, kannst Du auch die PivotTable-Funktion in Excel nutzen, um die Anzahl unterschiedlicher Werte zu ermitteln.

  1. Markiere Deine Daten und gehe zu Einfügen > PivotTable.
  2. Ziehe die Spalte mit den Auftragsnummern in den Zeilenbereich.
  3. Ziehe die Spalte mit den Verkäufern in den Wertebereich und wähle Anzahl als Aggregatfunktion.

Diese Methode eignet sich gut, wenn Du die excel pivot anzahl unterschiedlicher werte nutzen möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel:

Angenommen, Du hast folgende Daten in einem Arbeitsblatt:

Verkäufername Auftragsnummer Email Telefon
Max Mustermann 12345 max@example.com 0123456789
Max Mustermann 12345 max@example.com 0123456789
Erika Muster 12346 erika@example.com 9876543210
Max Mustermann 12347 max@example.com 0123456789

Wenn Du das VBA-Makro ausführst, erhältst Du:

  • Anzahl unterschiedlicher Aufträge: 3
  • Anzahl unterschiedlicher Telefonnummern: 1
  • Anzahl unterschiedlicher Emailadressen: 1

Tipps für Profis

  • Nutze die Dictionary-Objekte in VBA, um die Performance zu verbessern, besonders bei sehr großen Datenmengen.
  • Experimentiere mit Filter in Excel, um Daten vor der Analyse zu bereinigen.
  • Halte Deine Daten immer in einer strukturierten Form, um die Analyse zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich die gleiche Methode auch für andere Datentypen verwenden?
Ja, das VBA-Skript kann leicht angepasst werden, um auch andere Datentypen zu zählen, indem Du die entsprechenden Zellbereiche änderst.

2. Wie kann ich das Skript anpassen, um es für andere Spalten zu verwenden?
Du musst lediglich die Zellbereiche im Code ändern, um die gewünschten Spalten zu referenzieren.

3. Funktioniert das auch in Excel 365?
Ja, das Skript funktioniert in Excel 365 sowie in anderen gängigen Excel-Versionen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige