Microsoft Excel

Herbers Excel/VBA-Archiv

Zufallszahl - Werte ausschließen

Betrifft: Zufallszahl - Werte ausschließen von: Julian Ziegler
Geschrieben am: 10.09.2020 10:24:18

Moin zusammen,


auf Knopfdruck (Makro) soll eine Zufallszahl zwischen 1 und 1000 in Tabellenblatt 1, E2 geschrieben werden. Dafür habe ich folgenden VBA-Code, der gut funktioniert:

Worksheets("Tabelle1").Range("E2").Value = Int((1000 - 1 + 1) * Rnd + 1)

Danach soll nichts weiter geschehen. Die Zahl bleibt solange in E2 stehen, bis ich wieder das Makro aktiviere und die Zahl mit einer neuen Zufallszahl überschrieben wird.


Jetzt kommt noch folgende Bedingung hinzu:

In Tabellenblatt 2 ist eine Liste, Spalte A:A mit n Zahlen zwischen 1 und 1000. Diese Liste wird unabhängig von dem Zufallsgenerator laufend ergänzt. Sobald in dieser Liste eine Zahl auftaucht, beispielsweise die 67, darf der Zufallsgenerator die 67 nicht mehr ausgeben, usw.


Leider sind meine VBA-Kenntnisse bescheiden. Ich bin mir aber sicher, dass ich eine Art DO LOOP brauche, die so lange eine Zufallszahl ermittelt, bis er eine Zahl hat, die nicht in der Liste in Tabellenblatt 2 steht. Diese Zahl schreibt er dann in Tabelle 1, E2 rein. Leider hat mir meine deutsch- und englischsprachige Google-Suche nicht viel geliefert, was ich nutzen und ggf. anpassen konnte.


Könnt ihr mir weiterhelfen?


Vielen Dank!!

Betrifft: AW: Zufallszahl - Werte ausschließen
von: Joachim Lewandowski
Geschrieben am: 10.09.2020 10:29:12

Mach es umgekehrt.
Schreib in eine Liste alle Zahlen und lösche die, die nicht mehr gezogen werden sollen.
Dann suchst Du eine Zufallszahl aber nicht zw. 1 und 1000 sondern zw. 1 und z.B. 990 wenn schon 10 Zahlen gestrichen sind.
Dann suchst Du mit Rang nach der Zahl, die deiner Zufallszahl zugeordnet ist.
OK?
Gruß

Betrifft: AW: Zufallszahl - Werte ausschließen
von: Julian Ziegler
Geschrieben am: 10.09.2020 11:30:41

Hi Joachim,

Danke für deine schnelle Antwort! Für das, was ich vorhabe, ist dein Vorgehen eher ungeeignet. Insgesamt wäre es für mich einfacher, wenn der Zufallsgenerator um die Liste eingeschränkt wird. Die Liste mit den einzuschränkenden zahlen ist auch bereits automatisiert. Das letzte Puzzlestück ist jetzt der Zufallsgenerator.

Viele Grüße!

Betrifft: AW: Zufallszahl - Werte ausschließen
von: Daniel
Geschrieben am: 10.09.2020 11:38:59

Hi

im Prinzip so:
DO
   x = Worksheetfunction.RandBetween(1, 1000)
Loop Until Worksheetfunction.CountIf(Sheets("Tabelle2").Columns(1), x) = 0
Range("E2").value = x
wenn du ganzzahlige Zufallszahlen brauchst, ist die Excelfunktion Zufallsbereich einfacher und sie erfordert kein Randomize, um sich wiederholende Zahlenfolgen nach einem Neustart zu vermeiden.
sollte es mal vorkommen können, dass wirklich alle möglichen Zahlen ausgeschlossen sind, müsste man das vorab prüfen, sonst landest du in einer Endlosschleife

Gruß Daniel

Betrifft: AW: Zufallszahl - Werte ausschließen
von: Julian Ziegler
Geschrieben am: 10.09.2020 15:13:07

Hi Daniel,

vielen, vielen Dank! Funktioniert perfekt! Konnte noch ein, zwei Dinge für meine Bedürfnisse anpassen, aber dein Code war genau das, was ich gesucht habe. Ich muss mir mal dringend die VBA Syntax raufschaffen...

Danke!

Beiträge aus dem Excel-Forum zum Thema "Zufallszahl - Werte ausschließen"