Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1436to1440
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anzahl ohne Duplikate, leere Zellen ignorieren

Anzahl ohne Duplikate, leere Zellen ignorieren
14.07.2015 10:39:10
Bonduca01
Hallo,
Der Code unten gibt mir in Tabelle 1 Zelle (3,8) die Anzahl der Zellen ohne Duplikate aus.
Leider zählt der Code auch die leeren Zellen mit.
Gibt es eine Möglichkeit, dass er die leeren Zellen nicht zählt?

Sub TT()
Worksheets("Tabelle1").Activate
Cells(3, 8) = Anzahl
End Sub

Function Anzahl()
Dim wks As Worksheet, rngC As Range, objCounter As Object
Set objCounter = CreateObject("scripting.dictionary")
Worksheets("Tabelle2").Activate
For Each wks In Worksheets
For Each rngC In wks.Range("a2:a75000")
If rngC "" And Not objCounter.exists(rngC.Value) Then _
objCounter.Add rngC.Value, rngC.Value
Next
Next
Anzahl = objCounter.Count
Worksheets("Tabelle1").Activate
End Function

Danke! Viele Grüße,
Bon

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

Betreff
Datum
Anwender
Anzeige
AW: Anzahl ohne Duplikate, leere Zellen ignorieren
14.07.2015 10:52:07
Daniel
Hi
das sollte durch die Bedingung: If rngC "" eigentlich gegeben sein.
ggf kannst du mit if rngC.Value "" hier etwas präzisieren.
Die Funktion enthält noch einiges überflüssiges und kann so gekürzt werden:
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 Intersect(wks.Range("a2:a75000"), wks.UsedRange)
If rngC.value  "" Then objCounter(rngC.value) = 1
Next
Next
Anzahl = objCounter.Count
End Function
das Intersect mit der Usedrange sorgt dafür, dass die Schleife nicht unnötig über leere Zellen am Tabellenende läuft.
Gruß Daniel

Anzeige
AW: Anzahl ohne Duplikate, leere Zellen ignorieren
14.07.2015 14:36:01
Nepumuk
Hallo,
so sollte es deutlich schneller gehen:
Private Function Anzahl() As Long
    
    Dim objCounter As Object, objWorksheet As Worksheet
    Dim avntValues As Variant, vntItem As Variant
    
    Set objCounter = CreateObject("Scripting.Dictionary")
    
    For Each objWorksheet In Worksheets
        
        With objWorksheet
            
            avntValues = .Range(.Cells(2, 1), .Cells( _
                .Rows.Count, 1).End(xlUp).Offset(1, 0)).Value2
            
        End With
        
        For Each vntItem In avntValues
            
            objCounter(vntItem) = vbNullString
            
        Next
    Next
    
    Anzahl = objCounter.Count - 1
    
    Set objCounter = Nothing
    
End Function

Gruß
Nepumuk

Anzeige
AW: Anzahl ohne Duplikate, leere Zellen ignorieren
16.07.2015 16:26:57
Bonduca01
Entschuldigt das späte Dankeschön.
Vielen Dank!

368 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige