Clever-Excel-Forum

Normale Version: Häufigkeit eines Zahlenwertes in einem Feld berechnen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
@RPP :19:

Vielleicht zum 'testen'



Code:
Sub M_snb()
  Application.ScreenUpdating = False
  sn = Cells(1).CurrentRegion.Columns(1)
 
  With CreateObject("scripting.dictionary")
    For j = 1 To UBound(sn)
        If .exists(sn(j, 1)) Then sn(j, 1) = ""
        x0 = .Item(sn(j, 1))
    Next
  End With

  Cells(1).CurrentRegion.Columns(1) = sn
End Sub
Oder so:
(wir befinden uns in Excel, da sollte man imo auch Excel-Funktionalitäten nutzen,
einfach, nachvollziehbar, extrem schnell)
Code:
Sub RPP()
Tabelle2.Columns(1).RemoveDuplicates 1
End Sub

Gruß Ralf
So, mal ein Zwischenstand:
Ausgangsposition:
- 10.000 Zufallszahlen zwischen 1000 und 9999
  1.  Variante ratrad: Zeit 18,43 sek, es verbleiben 6.051 Unikate
  2.  Variante RPP: Zeit 0,11 sek, es verbleiben 6.051 Unikate
  3. Variante snb: Zeit 0,16 sek, es verbleiben 217 Unikate  Huh
Gruß Ralf
Wie grosz ist Ubound(sn) ?
Hab den Fehler gefunden.
Dein:
Cells(1).CurrentRegion.Columns(1) = sn
beim Rückschreiben des Arrays produziert Leerzeilen!
UBound ist 10.000
Leerzeilen entferne ich dann mit
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Allerdings bin ich dann bei 2,1 Sekunden, 20mal so lange wie meine simple Excel-Methode.

Gruß Ralf
Hallo zusammen,

wegen der anfänglichen Problemstellung wollte ich auch schon auf das Dictionary aufmerksam machen.

Auch wenn das Thema jetzt sich verlagert hat, finde ich es trotzdem erwähnenswert.

Der zuletzt eingestellte Code von snb könnte so erweitert bzw. angepasst funktionieren:


Code:
Sub M_snb_ati()
 Application.ScreenUpdating = False
 sn = Cells(1).CurrentRegion.Columns(1)

 With CreateObject("scripting.dictionary")
   For j = 1 To UBound(sn)
        .Item(sn(j, 1)) = 0
   Next
   Cells(1).CurrentRegion.Columns(1).Clear
   Cells(1).Resize(.Count) = Application.Transpose(.keys)
 End With

End Sub
Seiten: 1 2 3