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.

Zufallszahlen ohne doppelte Werte per VBA
#1
Hallo liebe Forum-Mitglieder,

habe folgendes Problem:

Ich möchte Zufallszahlen von 1 - 24 generieren lassen. ...also 6 Zahlen auswerfen lassen
Habe es schon mit Formel Zufallszahl und Zufallsbereich versucht, bekomme aber bei beiden oft doppelte Werte.

Ich würde das ganze gerne per Button über VBA erledigen lassen....leider kann ich kein VBA.
Kann mir hier jemand eine gute Lösung dafür geben?

Gruß
Mike

.xlsx   Zufallszahlen.xlsx (Größe: 13,17 KB / Downloads: 6)
Antwortento top
#2
Hallo,

ohne VBA:
https://www.herber.de/excelformeln/pages...iehen.html

Mit VBA:
Denkbar wäre, ein Dictionary oder eine Collection zu verwenden und dieses mit Zufallszahlen zu füllen.
Um bessere Zufallszahlen zu bekommen würde ich die Worksheet-Funktionen (Zufallszahl oder Zufallsbereich) nutzen statt der VBA-Funktion!
Gruß
Michael
Antwortento top
#3
(27.06.2020, 10:15)Der Steuerfuzzi schrieb: Hallo,

ohne VBA:
https://www.herber.de/excelformeln/pages...iehen.html

Mit VBA:
Denkbar wäre, ein Dictionary oder eine Collection zu verwenden und dieses mit Zufallszahlen zu füllen.
Um bessere Zufallszahlen zu bekommen würde ich die Worksheet-Funktionen (Zufallszahl oder Zufallsbereich) nutzen statt der VBA-Funktion!
Hallo
beides ....(Zufallszahl oder Zufallsbereich) .....habe ich schon ausprobiert.....kommen aber doppelte Werte.
Es sollen auch ganze Zahlen ausgeworfen werden......2 - 8  - 12 - 22 - 31  - 44     z. B.
Antwortento top
#4
Hast Du meinen Link gesehen? Hast Du die Seite dort gelesen?
Gruß
Michael
Antwortento top
#5
Du brauchst nur F9.


Angehängte Dateien
.xlsx   __einfach so_snb.xlsx (Größe: 11,34 KB / Downloads: 7)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top
#6
Hi

Hatte ich in VBA mal so gelöst.
Code:
'100% jede Zahl nur ein mal
'Zahlenbereich von 1 - xx
Public Sub Start()
Dim objZuf As Object, objZufSort As Object
Dim bis As Long, k, j As Long

bis = 24    'Zahlenbereich von 1 bis 24

Set objZuf = CreateObject("System.Collections.Arraylist")
Set objZufSort = CreateObject("System.Collections.Arraylist")

Randomize
Do
  k = Rnd
   If Not objZuf.Contains(k) Then
     objZuf.Add (k)
     objZufSort.Add (k)
   End If
Loop While bis > objZuf.Count
objZufSort.Sort

For j = 1 To 6  '6 Zahlen von 24
  Cells(22, j) = objZuf.IndexOf(objZufSort(j - 1), 0) + 1
Next j

Set objZuf = Nothing
Set objZufSort = Nothing

End Sub
Gruß Elex
[-] Folgende(r) 1 Benutzer sagt Danke an Elex für diesen Beitrag:
  • MdeJong
Antwortento top
#7
@Elex: Eventuell ist es nicht relevant aber rnd liefert keine guten (Pseudo-)Zufallszahlen. Die Arbeitsblattfunktionen arbeiten hier wesentlich besser.
Mir ist es aufgefallen, als ich ein paar Hundert GUID mit rnd erzeugt habe und (komischerweise) einige Dubletten hatte.
Gruß
Michael
Antwortento top
#8
Sollte hier eigentlich nicht relevant sein, da die Arrayliste nur eindeutige aufnimmt und dann ja nur der Rang der Zahl ermittelt wird.

Gruß Elex
Antwortento top
#9
Kann auch so:

Code:
Sub M_snb()
  Randomize
  sn = Array(Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd, Rnd)
   
  ReDim sp(5)
  For j = 0 To UBound(sp)
    sp(j) = Application.Match(Application.Large(sn, j + 1), sn, 0)
  Next
   
   MsgBox Join(sp, vbLf)
End Sub

@Steuer

Randomize ist wichtig in VBA.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Benutzer sagt Danke an snb für diesen Beitrag:
  • MdeJong
Antwortento top
#10
Hi snb Smile


genau so....gefällt mir!

jetzt habe ich noch eine Frage......die habe ich in der beigefügten Bilddatei beschrieben Smile

Gruß
Mike


.zip   Form Zahlen generieren.zip (Größe: 311,37 KB / Downloads: 4)
Antwortento top


Gehe zu:


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