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

Forumthread: Doppelte Einträge per VBA (damit es schnell geht)

Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 13:00:11
nontacky
Hallo allerseits,
ich habe eine Liste mit 50.000 Einträgen, bei denen ich überprüfen will ob Einträge in Spalte K (K15 bis K50.000) doppelt oder gar mehrfach sind.
Aktuell löse ich das mit einer Zählenwenn Funktion in Spalte A (also =zählenwenn(K:K;K15), aber da ist die Performance sehr schlecht, das berechnen dauert mehrere Minuten.
Ich bräuchte also ein Makro, das mir per Knopfdruck einmal die Liste durchrechnet und mir dann in der jeweiligen Zeile in der ein Eintrag in Spalte K doppelt ist, in Spalte A die Anzahl anzeigt wie oft der Eintrag in Spalte K doppelt / mehrfach ist.
Richtig toll wäre es natürlich wenn in der entsprechenden Zeile in Spalte A dann auch drin stünde in welchen anderen Zeilen der jeweils doppelte Eintrag ist, aber das ist nicht zwingend nötig :).
Vielen Dank für eure Hilfe.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 13:07:18
Rudi
Hallo,
Sub Anzahl()
With Range("A15:A50000")
.FormulaR1C1 = "=countif(C11,rc11)"
.Copy
.PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub

Gruß
Rudi

Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 13:40:08
nontacky
Vielen Dank, funktioniert. Ist aber genau so langsam wie wenn man es per Funktion macht :).

Anzeige
AW: Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 14:36:49
Rudi
Hallo,
klar, es nutzt ja auch die Funktion. Nur dass die anschließend in Werte umgewandelt wird.
Zählenwenn() ist übrigens eine der schnellsten Funktionen in Excel. Mit 'reinem' VBA wird's nur langsamer.
Gruß
Rudi

AW: Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 14:51:29
Rudi
Hallo,
doch ne Lösung:
Sub zaehlen()
Dim arr, i As Long, oCount As Object
Set oCount = CreateObject("Scripting.dictionary")
arr = Range(Cells(15, 11), Cells(Rows.Count, 11).End(xlUp))
For i = 1 To UBound(arr)
oCount(arr(i, 1)) = oCount(arr(i, 1)) + 1
Next
For i = 1 To UBound(arr)
arr(i, 1) = oCount(arr(i, 1))
Next
Cells(15, 1).Resize(UBound(arr)) = arr
End Sub

Gruß
Rudi

Anzeige
Doppelte Einträge per VBA (damit es schnell geht)
17.09.2013 15:08:41
nontacky
Hallo Rudi,
absolut genial - so schnell, Wahnsinn .. man merkt gar nicht, dass überhaupt was gerechnet wird :).
Vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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