Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Duplikate zählen
#1
Hallo liebe Forengemeinde, habe in einer Spalte (ca.5000 Zeilen) Zahlen oder Kombinationen aus Zahlen und Buchstaben. Z.B.: 200056895 oder 32475EUN34. Mit einer Formel (Ergebnis-Zelle) würde ich jetzt gerne die Gesamt-Anzahl der Duplikate bestimmen. Ob die Zelleninhalte 2-fach oder x-fach vorkommen ist nicht wichtig. Ich möchte hiermit bestimmen wie viele "Fehler" meine Spalte beinhaltet. Problem: Die Zelleninhalte sind teilweise mehr als 15-stellig. Die übliche Zählung mit Summenprodukt und Zählenwenn scheitert wegen der Genauigkeit. Der Umweg über Hilfsspalte und Kombination mit ' (Genauigkeit) scheitert aus Performancegründen (Frontend). Leere Zellen oder 0 sollen nicht betrachtet werden. Im 2.Step würde ich dann noch alle Duplikate bedingt formatiert anzeigen lassen - scheitere aber hier auch an der Genauigkeit.
Würde mich über Hilfe freuen. Danke
Antworten Top
#2
Hallo,

du schreibst, dass du keine Hilfsspalte willst und Zählenwenn nicht geht. Du kannst noch überlegen, ob du alles in Text umwandelst  - mit TEXT(A2;"#") oder indem du verkettest &"" und dann zählenwenn verwendest. Kannst auch über eine Pivot-Tabelle nachdenken.
Wenn dies auch nicht funktioniert, dann bleibt wohl nur der VBA-Weg, um Hilfsspalten zu bilden und wieder zu löschen. Übrigens die bedingte Foratierung ist auch nicht sehr ressourcenschonend (volatil).
Viel Erfolg!
Andreas
Antworten Top
#3
Elvisonline,

um eine Hilfsspalte kommst du vermutlich nicht rum - gerade aus Performancegründen.
Wenn man diese aber via Power Query füllt dann ist wieder etwas performance schonender.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#4
@ shift-del
Das war (natürlich) auch mein erster Gedanke, aber als mein Blick dann noch oben rechts zu den Userdaten wanderte erkannte ich, dass sich das Ganze in einem Antiquariat (xls 2007) abspielt ...
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#5
Danke für den Hinweis, Günther.
Da habe ich dieses Mal gar nicht drauf geachtet.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#6
Hallo,

5000 Zeilen sind für das "altmodische" VBA mit Arrays und Dictionary vermutlich unter 1 Sekunde zu bewältigen. Aber der Fragesteller sollte zuerst bestätigen, dass er mit einem Code etwas anfangen kann.

mfg
Antworten Top
#7
Hallo Leute,

danke für die Antworten. Würde mich über einen fertigen Code natürlich freuen. Würde der Code "nur" zählen oder klappt das auch mit der Formatierung?
Antworten Top
#8
Hallo,

so als Entwurf einer Lösung:


Code:
Sub iFen()

With CreateObject("Scripting.Dictionary")
Ar = Columns(1).SpecialCells(2)
For i = 1 To UBound(Ar, 1)
   If Ar(i, 1) <> 0 Then
       If Not .exists(Ar(i, 1)) Then
           y = .Item(Ar(i, 1))
       Else
       'färben der Duplikate
           Cells(i, 1).Interior.Color = vbYellow
       End If
   End If
Next i
'Ausgabe in Text-Spalte
Columns(3).NumberFormat = "@"
Range("C1").Resize(.Count) = Application.Transpose(.keys)
Debug.Print .Count

End With
End Sub


Meine Beispieldatei ist angehängt.


mfg


Angehängte Dateien
.xlsm   Elvisonline.xlsm (Größe: 16,16 KB / Downloads: 4)
Antworten Top
#9
Hallo Fennek, vielen Dank! Das mit der Formatierung klappt "fast" perfekt. Makro färbt nur bis zur nächsten leeren Zelle. Der Code kreiert in C eine Liste der Werte ohne Duplikate. Wäre es noch möglich die Anzahl der Duplikate zu zählen? Danke Gruß
Antworten Top
#10
Hallo,

im Debug-Fenster steht die Anzahl ohne Duplikate, alle Werte kannst du entweder in Sheet ermitteln oder mit Ubound(Ar).

Gefärbt wird nur in Spalte A und auch nur das 2. oder jedes weitere Vorkommen. Wenn die ganze Zeile gefärbt werden soll, muss ein ".resize" ergänzt werden.

ungegeprüft:


Code:
cells(i,1).resize(,### Anzahl der Spalten ###) .interior.color = vbyellow


Die Anzahl der Spalten kann direkt fest eingegeben werden oder variabel mit ubound(Ar,2).

mfg
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste