Anzahl aus "Zählen ohne Duplikate" in VBA
Schritt-für-Schritt-Anleitung
-
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
-
Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
-
Füge den folgenden VBA-Code in das Modul ein:
Function Anzahl()
Dim wks As Worksheet, rngC As Range, objCounter As Object
Set objCounter = CreateObject("scripting.dictionary")
For Each wks In Worksheets
For Each rngC In wks.Range("A3:A650")
If rngC <> "" And Not objCounter.exists(rngC.Value) Then _
objCounter.Add rngC.Value, rngC.Value
Next
Next
Anzahl = objCounter.Count
End Function
-
Schreibe dann den Code für die MsgBox in ein weiteres Sub:
Sub TT()
MsgBox Anzahl
End Sub
-
Schließe den VBA-Editor und gehe zurück zu Excel.
-
Führe das Makro TT aus, um die Anzahl der eindeutigen Werte zu sehen.
Häufige Fehler und Lösungen
-
Fehler: "Typenübereinstimmung"
- Stelle sicher, dass die Zellen in dem angegebenen Bereich tatsächlich Werte enthalten und nicht leer sind.
-
Fehler: "Objekt nicht gefunden"
- Überprüfe, ob der Name des Arbeitsblattes korrekt ist, wenn Du auf ein bestimmtes Blatt zugreifen möchtest.
-
Lösung für lange Laufzeiten
- Wenn die Laufzeit der Funktion zu lang ist, versuche, die Anzahl der durchsuchten Zellen zu verringern oder gezielt nur ein bestimmtes Blatt abzufragen.
Alternative Methoden
Eine weitere Möglichkeit, die Anzahl eindeutiger Werte zu zählen, ist die Verwendung der Evaluate-Funktion in VBA. Hier ein Beispiel:
Sub ZählenOhneDuplikate()
MsgBox Evaluate("=SUM(IF(A3:A650<>"""",1/COUNTIF(A3:A650,A3:A650)))")
End Sub
Diese Methode kann in bestimmten Situationen schneller sein.
Praktische Beispiele
Angenommen, Du hast in der Spalte A Werte, die Du zählen möchtest. Hier sind einige Beispiele:
- Zählen von Duplikaten: Verwende den oben beschriebenen VBA-Code, um die Anzahl der einzigartigen Werte zu zählen.
- Einzelner Bereich: Wenn Du nur einen bestimmten Bereich zählen möchtest, ändere den Code in der
For Each Schleife, um nur diesen Bereich zu durchsuchen, z.B. wks.Range("A1:A100").
Tipps für Profis
-
Optimierung der Performance: Wenn Du große Datenmengen hast, solltest Du den Bildschirmaktualisierungsmodus deaktivieren, um die Performance zu verbessern:
Application.ScreenUpdating = False
' Führe Deinen Code aus
Application.ScreenUpdating = True
-
Verwendung von Dictionaries: Wenn Du die Anzahl der eindeutigen Werte zählen möchtest, ist die Verwendung eines Dictionaries wie im Beispiel sehr effektiv und spart Zeit.
FAQ: Häufige Fragen
1. Wie kann ich die Funktion auf ein bestimmtes Tabellenblatt anwenden?
Du kannst den Bereich anpassen, indem Du z.B. Rot!A3:A650 in den Code einfügst.
2. Gibt es eine Formel in Excel, die ich verwenden kann?
Ja, Du kannst die Formel =SUMME(WENN(A3:A650<>"";1/ZÄHLENWENN(A3:A650;A3:A650))) direkt in eine Zelle eingeben, um die Anzahl der eindeutigen Werte zu zählen.