Excel Zufallszahlen ohne Wiederholungen innerhalb eines Bereiches

Cinderella22

Lt. Junior Grade
Registriert
Mai 2015
Beiträge
260
Hallo,

vorab: falls ich im Falschen Bereich gelandet sein sollte bitte einfach verschieben und sry :-D..

nun zu meinem Problem.

Ich möchte gerne in einer Exceltabelle Zufallszahlen (von 1 - 5) pro Zelle ausgeben lassen. Das ganze soll allerdings innerhalb eines Bereiches (von A1 bis C30) ausgegeben werden, und darf es dürfen innerhalb der Zeilen keine Wiederholungen auftreten. So soll das ganze dann z. B. aussehen:

zufallszahlen.JPG
(nur halt runter bis C30..)

Im Internet habe ich bereits die Funktion =Zufallsbereich etc. gefunden, diese Funktionieren zwar, geben innerhalb einer Zeile aber doppelte Werte aus..

Jemand eine Idee?
 
Koppel die Kalkulation einfach an die aktuelle Uhrzeit, dann werden auch keine Duplikate erzeugt
 
@Lost_Byte

Das mit der Wenn Funktion werde ich mal ausprobieren Danke :)

@Rome1981

inwiefern die aktuelle Uhrzeit?
Die Zufällig generierten Zahlen müssen in meinem Fall für ca. 1 Monat unveränder bleiben
 
Es geht auch nicht darum die Zahlen zu ändern, sondern die Uhrzeit zum Zeitpunkt der Erstellung in das Ergebnis einfließen zu lassen... Keine zwei Uhrzeiten sind identisch, daher kommen so zuverlässig unterschiedliche Zufallszahlen zustande. :)
 
Ah interessant!
Hatte bisher nicht die Zeit mir das mal mit der Wenn Funktion anzusehen..

wie genau lässt man denn da die Uhrzeit mit einfließen, mit einer bestimmten Funktion?
 
Da gibt es grundsätzlich zwei Möglichkeiten... für mich am einfachsten wäre die Berechnung per Makro.
Ich gehe aber davon aus, dass du Formeln bevorzugst, daher wäre etwas wie

=ZUFALLSZAHL()*JETZT()

eine mögliche Lösung... man kann aber auch addieren oder jegliche andere Form der Kombination wählen.
 
Die Formel kapiere ich nicht; wenigstens nicht unter der Prämisse im Zahlenraum 1 bis 5 Dubletten zu vermeiden.
Meiner Meinung nach kann das nur ein Makro.

CN8
 
Cinderella22 schrieb:
inwiefern die aktuelle Uhrzeit?
Die Zufällig generierten Zahlen müssen in meinem Fall für ca. 1 Monat unveränder bleiben

... Und darum bleibt mehr oder weniger nur VBA übrig:
Code:
Sub Zufall1bis5()
   Dim aBereich()
   Dim Ze As Integer
   
   Randomize Timer
   aBereich = Selection
   For Ze = 1 To UBound(aBereich)
      aBereich(Ze, 1) = CSng(Int((5 - 1 + 1) * Rnd + 1)) + CSng(Time)
   Next Ze
   Selection = aBereich()
End Sub

-> Bereich markieren und Makro aufrufen. Bis zum nächsten Aufruf in dem Bereich ändert sich da nichts.
 
3,848530054
3,848530054
2,848530054
1,848530054
4,848530293
3,848530054
2,848530054
2,848530054
5,848530293
2,848530054
5,848530293
5,848530293
2,848530054
3,848530054
4,848530293

Willkürlich markiert, Makro angeworfen - und Dubletten.
und darf es dürfen innerhalb der Zeilen keine Wiederholungen auftreten.

Nun, da wiederholt sich m.E. schon was.

Code:
Sub NichtmehrfacherZufall()
Dim Zahlen()
Const Anzahl As Integer = 5
Const EinsBis As Integer = 10
Dim I As Integer
Dim J As Integer
Dim Würfel As Integer
 Randomize Timer 'Es wurde doch nicht diese typische Würfel-Saat mit TIME() verwechselt?!
 ReDim Zahlen(Anzahl)
 For I = 1 To Anzahl
  Zahlen(0) = 1 'Flagge - setzen damit While anläuft
  While Zahlen(0) = 1
   Würfel = Int(Rnd() * EinsBis) + 1
   Zahlen(0) = 0 'Flagge bergen…
   For J = 1 To Anzahl
    If Zahlen(J) = Würfel Then
     Zahlen(0) = 1 '…und bei Dublette setzen damit weiter gewürfelt wird
     Exit For
    End If
   Next
  Wend 'Wenn Flagge unten wurde erfolgreich gewürfelt
  Zahlen(I) = Würfel
 Next
 For I = 1 To Anzahl
  Debug.Print Zahlen(I),
 Next
 Debug.Print
End Sub
Dieses Beispiel (flott hingeschrieben) mit Ausgabe im Direktbereich (das für 5 Zellen aus dem Wertebereich 1 bis 10 würfelt) verhindert mehrfaches Auftreten von Zahlen.
Mit Anzahl = 6 und EinsBis = 49 - aber das hat jeder schon erraten ;)

CN8
 
Zurück
Oben