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.

Häufigkeit eines Zahlenwertes in einem Feld berechnen
#21
Smile 
@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
Antworten Top
#22
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#23
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#24
Wie grosz ist Ubound(sn) ?
Antworten Top
#25
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#26
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
Gruß Atilla
Antworten Top


Gehe zu:


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