Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Zufallszahl mit Wiederholungsbedingung
03.05.2020 15:09:49
Martin
Hallo zusammen,
ich habe eine Frage an die Excel Profis in diesem Forum.
Ich habe in einem Tabellenblatt eine Tabelle mit 35 Einträgen. In Spalte A ist eine ID, diese geht von 1 bis 35.
Jeder ID ist in Spalte B eine eindeutige Fragennummer zugeordnet und in Spalte C eine konkrete Frage.
Sprich die Tabelle ist ein Fragenkatalog, bestehend aus 35 Fragen.
Die IDs wiederholen sich nicht.
In einem zweiten Tabellenblatt habe ich mir einen Command Button angelegt. Dieser soll auf Knopfdruck in Zelle A7 eine Zufallszahl im Bereich von 1 bis 35 generieren.
In zwei weiteren Zellen lasse ich mir dann - zu der per Zufall generierten ID - die dazugehörige Fragennummer und konkrete Frage anzeigen.
Ich habe als Vorlage einen Code aus diesem Forum benutzt:
- Rudis Vorlage: https:\/\/www.herber.de/forum/archiv/1520to1524/1521546_excel_zufallszahl_ohne_wiederholung.html

Private Sub CommandButton1_Click()
Dim Bereich As Range
Dim zelle As Range
Dim objZufall As Object
Set objZufall = CreateObject("scripting.dictionary")
Set Bereich = Range("A7")
Do While objZufall.Count 

Die Zufallsausgabe einer ID im gewünschten Bereich, funktioniert wie gewünscht.
Ich möchte aber noch eine Bedingung einbauen, die dafür sorgt, dass sich die per Zufall gezogene Zahl erst nach 20 Wiederholungen wiederholt.
Sprich: Ziehen ohne Zurücklegen und nach 20 Ziehungen wird ein Reset durchgeführt.
Wie bekomme ich das hin?
Muss ich in den Code eine Art Counter einbauen?
Viele Grüße
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zufallszahl mit Wiederholungsbedingung
03.05.2020 15:56:19
Oberschlumpf
Hi Martin,
ein Counter ist schon mal eine gute Idee.
Aber du musst ja - jede der 35 Zahlen - unabhängig voneinander überwachen!
Das heißt, du benötigst 35 Counter.
Ich würde versuchen, das Ganze über ein zweidimensionales Array zu lösen.
Zeig mal bitte per Upload eine Bsp-Datei mit 35 Bsp-Einträgen. Der Aufbau der Bsp-Datei muss natürlich genau so sein, wie der Aufbau deiner Originaldatei.
Ciao
Thorsten
AW: Zufallszahl mit Wiederholungsbedingung
03.05.2020 17:34:21
Martin
Hallo Thorsten,
anbei mein Beispiel im exakt gleichen Aufbau wie das Original.
https:\/\/www.herber.de/bbs/user/137231.xlsm
Viele Grüße
Martin
Anzeige
AW: Zufallszahl mit Wiederholungsbedingung
04.05.2020 06:23:23
Oberschlumpf
Hi Martin
hier, versuch mal:
https:\/\/www.herber.de/bbs/user/137235.xlsm
Hilfts?
Und wie findest du die Ideen der Anderen, die sich ja auch für dich Gedanken gemacht haben?
Ciao
Thorsten
AW: Zufallszahl mit Wiederholungsbedingung
05.05.2020 19:21:25
Martin
Hallo Bernd, hallo Thorsten, hallo Daniel,
erst einmal vielen lieben Dank für die zahlreichen Anregungen und Lösungsvorschläge!
@Daniel: Deine Lösung habe ich versucht für mich anzupassen, hat aber nicht ganz geklappt mit meinen laienhaften Kenntnissen. Ich habe immer wieder einen Laufzeitfehler verursacht.
@Bernd: Deine Lösung übersteigt bei Weitem meine aktuellen VBA Kenntnisse, da bin ich leider raus.
@Thorsten: Deine Lösung meine ich nach langem Nachdenken einigermaßen zu verstehen.
Auf alle Fälle funktioniert es und ich kann es nutzen.
Vielen Dank euch.
Beste Grüße
Martin
Anzeige
AW: Zufallszahl mit Wiederholungsbedingung
03.05.2020 16:45:56
Matthias
Moin!
Ich würde da im Blatt einen Bereich nutzen (bspw. Spalte X). Dort schreibst du alle 35 Zahlen in die ersten Zeilen. Deine ZUfallszahl errechnest du dann über die Anzahl der im Bereich beschriebenen Zeilen (hier noch 35 - das aber nicht fest vorgeben, sondern bestimmen). Nach einer Ziehung löschst du die Zahl aus der Spalte raus und fügst sie in Spalte Z am Anfang ein. Zugleich prüfst du, ob in Zeile 20 der Spalte Z ein Wert steht. Wenn ja, fügst du den in Spalte X am Ende ein und löschst ihn in Spalte Z.
Gedanke dabei ist, dass sich deine Auswahl immer reduziert und du immer aus der aktuellen Anzahl einen Wert ziehst. Gleichzeitig listest du die gelöschten Werte daneben auf. Komm bei den gelisteten in Zeile 20 ein Wert vor, wird er wieder bei den möglichen eingefügt.
VG
Anzeige
AW: Zufallszahl mit Wiederholungsbedingung
03.05.2020 22:26:40
Daniel
Hi
Das geht beispielsweise so:
Du musst dir letzten 20 Zahlen merken und dann das Ziehen der Zufallszahl so oft wiederholen, bis eine erlaubte dabei ist, die du verwenden kannst.
Dann musst du bei den 20 gemerkten die älteste entfernen und die neue hinzufügen.
Der Code für den Button könnte so aussehen :
Private Sub CommandButton1_Click()
Dim x as long
With WorksheetFunction
Do
x = .randbetween(1, 35)
Loop until .CountIf(Sheets("Tabelle1").Columns(4), x) = 0
End with
With Sheets("Tabelle1").Range("D1")
.Resize(19, 1).copy .Offset(1, 0)
.value = x
End with
Range("A7").Value = x
End sub

Gruß Daniel
Anzeige

233 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige