Formel gesucht Excel für Zufallsgenerator?

... komplette Frage anzeigen

2 Antworten

Könnte man die Logik je Zeile nicht verkürzen und direkt 4 unverschiedliche Zufallszahlen aus dem jeweiligen Wertebereich verwenden oder benötigst Du die Werte von Spalte 14-23 noch für andere Berechnungen?

Falls Du nur 8-12 brauchst, wäre das vielleicht eine Möglichkeit: In Spalte Y wird der untere Wert des Zufallsbereichs, in Spalte Z der obere Wert eingegeben. Damit kannst das je Zeile nach Bedarf festlegen.

Sub zufallszahlen()
Dim minimum, maximum As Integer
For j = 1 To 390
minimum = Cells(j, 25).Value ' Spalte Y
maximum = Cells(j, 26).Value ' Spalte Z
maximum = maximum - minimum + 1
For i = 8 To 12
Cells(j, i).Value = Int((maximum * Rnd) + minimum)
While WorksheetFunction.CountIf(Range(Cells(j, 8), Cells(j, 12)), Cells(j, i).Value) > 1
Cells(j, i).Value = Int((maximum * Rnd) + minimum)
k = k + 1
If k > 100 Then Exit Sub
Wend
k = 1
Next i
Next j
End Sub

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Ninombre
29.01.2016, 10:26

wäre die Lösung nach deiner Beschreibung, also erst die 10 Zufallszahlen generieren und dann vier davon auswählen ohne Dopplungen.

Sub zufallszahlen2()
Dim minimum, maximum As Integer
For j = 1 To 29
minimum = Cells(j, 25).Value ' Spalte A
maximum = Cells(j, 26).Value ' Spalte B
maximum = maximum - minimum + 1
For i = 14 To 23
Cells(j, i).Value = Int((maximum * Rnd) + minimum)
Next i
For k = 8 To 12
Cells(j, k).Value = Cells(j, 13 + Int((10 * Rnd) + 1)).Value
While WorksheetFunction.CountIf(Range(Cells(j, 8), Cells(j, 12)), Cells(j, k).Value) > 1
Cells(j, k).Value = Cells(j, 13 + Int((10 * Rnd) + 1)).Value
l = l + 1
If l > 100 Then Exit Sub
Wend
l = 1
Next k
Next j
End Sub

1
Kommentar von Marceloblau01
29.01.2016, 10:49

Ninombre ich spüre wir stehen kurz davor! Kannst du mit VBA in Zeile 1-390, 4 Zahlen aus 1-9 ; 4 Zahlen aus 10-19  ; 4 Zahlen aus 20-29  ; 4 Zahlen aus 30-39 und 4 Zahlen aus 40-49 direkt generieren ? Von 1-390 dürfen sich die Zahlen Doppeln aber nicht innerhalb der 4 Zahlen in einer Zeile , dann ist das Problem gelöst

0
Kommentar von Marceloblau01
29.01.2016, 11:36

Danke erstmal ich probiere es später aus wenn ich zu Hause bin melde mich danach

0

Ich habe zwar jetzt keine Lösung parat, aber Du könntest eine VBA-Funktion schreiben und diese in der Formel verwenden. Wie diese Funktion geschrieben werden muss kann ich Dir leider nicht sagen, weil ich deine Tabelle nicht kenne und nicht weiss was Du vorhast. So eine ähnliche Frage habe ich kürzlich schon beantwortet, vielleicht kann ich Dir ja noch weiterhelfen mit der "ohneDopplerFunktion".

https://www.gutefrage.net/frage/excel-zufalltabelle?foundIn=notification-center#answer-192099235

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Marceloblau01
29.01.2016, 10:00

"Wenn" diese Formel =VERGLEICH(KKLEINSTE(A$1:A$49;ZEILE());A$1:A$49;0) in B1-B6  6 Zahlen ohne Doppler aus A1 :A49 ausgeben kann wenn in A1 :A49 =Zufallszahl() steht, "Dann" muss es doch eine Formel geben die in B1:B4  4 Zahlen aus A1:A9 ausgeben kann ohne Doppler wenn in A1:A9 =Zufallsbereich(1;9) steht; "Sonst" ????

0

Was möchtest Du wissen?