Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
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

VBA Zählenwenn Array Dict

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zählenwenn Array Dict
24.02.2020 09:33:08
Nepumuk
Hallo Max,
du machst nichts falsch. Das liegt am Transpose, das kann nur eine bestimmte Datenmenge verarbeiten. Das heißt, du musst das Dictionary nochmal umschaufeln:
Option Explicit
Sub zaehlen()
Dim objCount As Object, vntTmp, vntKEY
Dim lngIndex As Long
Set objCount = CreateObject("scripting.dictionary")
'Suchbegriffe
vntTmp = Sheets("tabelle2").Cells(1, 1).CurrentRegion
For Each vntKEY In vntTmp
objCount(vntKEY) = 0
Next
'Suchmatrix
vntTmp = Sheets("Tabelle1").Cells(2, 1).CurrentRegion.Resize(, 1)
For Each vntKEY In vntTmp
If objCount.exists(vntKEY) Then _
objCount(vntKEY) = objCount(vntKEY) + 1
Next
ReDim vntTem(1 To objCount.Count, 1 To 1)
For Each vntKEY In objCount.items
lngIndex = lngIndex + 1
vntTem(lngIndex, 1) = vntKEY
Next
'Werte ausgeben
Sheets("Tabelle2").Cells(2, 2).Resize(objCount.Count) = vntTem
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Zählenwenn Array Dict
24.02.2020 10:27:56
Max
Hey Nepumuk,
vielen Dank. Das hat mir sehr geholfen.
Eine Sache ist mir noch aufgefallen. Obwohl bei Suchbegriffe und Werte ausgeben der gleiche Bereich angegeben ist, fehlt beim Werte ausgeben das Ergebnis der letzten Zeile. Ich habe schon an den Bereichen geschraubt aber die Lösung nicht gefunden.
Weißt du woran es liegen kann?
Grüße
Max
AW: VBA Zählenwenn Array Dict
24.02.2020 10:41:56
Max
Hey Nepumuk,
ich habe zum Abgleich mal die normale Zählenwenn-Formel neben das Ergebnis des Makros gesetzt. Bis auf ein paar Ausnahmen, passen die Ergebnisse nicht zusammen.
Woran kann das liegen?
AW: VBA Zählenwenn Array Dict
24.02.2020 10:53:17
Max
Ich glaube das Problem gefunden zu haben. In Tabelle2 gibt es Duplikate. Anstatt das passende Ergebnis in Spalte B zu schreiben, wird der Wert anscheinend ignoriert und dadurch verschieben sich die folgenden Ergebnisse.
Gibt es dafür eine Lösung, außer die Duplikate in Tabelle2 zu löschen?
Anzeige
AW: VBA Zählenwenn Array Dict
24.02.2020 11:38:37
Nepumuk
Hallo Max,
stimmt, da sind zwei doppelte drin. Teste mal:
Option Explicit

Sub zaehlen()
    Dim objCount As Object
    Dim vntTmp, vntKEY
    Dim lngIndex As Long
    
    Set objCount = CreateObject(Class:="Scripting.Dictionary")
    
    'Suchbegriffe
    With Worksheets("Tabelle2")
        vntTmp = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
    End With
    
    With objCount
        
        For Each vntKEY In vntTmp
            If .Exists(vntKEY) Then
                .Item(Key:=Rnd) = vbNullString
            Else
                .Item(Key:=vntKEY) = 0
            End If
        Next
        
        'Suchmatrix
        With Worksheets("Tabelle1")
            vntTmp = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value2
        End With
        
        For Each vntKEY In vntTmp
            If .Exists(vntKEY) Then .Item(Key:=vntKEY) = .Item(Key:=vntKEY) + 1
        Next
        
        Redim vntTem(1 To .Count, 1 To 1)
        
        For Each vntKEY In .Items
            lngIndex = lngIndex + 1
            vntTem(lngIndex, 1) = vntKEY
        Next
        
        'Werte ausgeben
        Worksheets("Tabelle2").Cells(2, 2).Resize(.Count) = vntTem
        
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Zählenwenn Array Dict
24.02.2020 22:44:56
Max
Hey Nepumuk,
besten Dank. Jetzt klappt es :-)
Grüße
Max

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige