Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zufallszahlen n. System per VBA

Zufallszahlen n. System per VBA
amintire
Hallo alle zusammen,
ich habe eine Excel Tabelle (siehe Beispielmappe) in der per VBA Zufallszahlen generiert werden sollen.
https://www.herber.de/bbs/user/73128.xls
In der Zelle B2 muss eine Zahl von 1-16 eingetragen werden, wenn z.B. eine 7 eingetragen wird, dann soll per VBA Zufallszahlen von 1-60 generiert werden (also 7 Zahlen von 1-60) die sollen jeweils pro Spalte B8-B23 eingetragen werden. In dem Beispiel bei 7 Zahlen in der Spalte B8-B14.
Der gesamte blau markierte Bereich soll mit Zufallszahlen gefüllt werden, wobei sich nur insgesamt 3 Zahlen pro Spalte wiederholen dürfen.
Hoffe das es nicht zu kompliziert ist und freue mich auf jeden Lösungsvorschlag.
Vielen Dank für eure Hilfe.
Lieben Gruß
Amina
Anzeige

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

Betreff
Benutzer
Anzeige
Zufallszahlen mit VBA
18.01.2011 14:58:29
Matthias
Hallo
Zitat:
Der gesamte blau markierte Bereich soll mit Zufallszahlen gefüllt werden, wobei sich nur insgesamt 3 Zahlen pro Spalte wiederholen dürfen.
3 Fragen:
Dürfen oder müssen/sollen sich Zufallszahlen wiederholen ?
Darf man den Hintergrund erfahren, um evtl. einen anderen Weg zu testen ?
Aus welchem Grund stehen die Zahlen 1 - 60 in Zeile 5 ?
Hab dennoch mal ein bisschen gebastelt:
im Beispiel nur für Spalte(B)!
B2 ist mit Daten/Gültikeit begrenzt!
Sub Zufall()
Dim schleife As Long, x As Long, MyWert, y As Long
schleife = Range("B2").Value
Range("B8:B23").ClearContents
y = 8
For x = 1 To schleife
MyWert = Int((60 * Rnd) + 1)
Cells(y, 2).Value = MyWert
y = y + 1
Next
End Sub
https://www.herber.de/bbs/user/73130.xls
Gruß Matthias
Anzeige
AW: Zufallszahlen mit VBA
18.01.2011 15:11:36
amintire
Hallo Matthias,
vielen Dank für deine schnelle Antwort. Habe aber einen Fehler in deiner Beispieldatei entdeckt, also pro Spalte sollen sich keine Zahlen wiederholen. Aber im gesamten blauen Bereich können sich maximal drei Zahlen wiederholen.
Zu deinen Fragen:
Dürfen oder müssen/sollen sich Zufallszahlen wiederholen ?
Es dürfen sich Zufallszahlen wiederholen, aber nur maximal drei Zahlen pro Spalte. Muss aber keine Bedingung sein, also wenn sich Zahlen wiederholen sollten dann eben nur maximal drei Zahlen.
Darf man den Hintergrund erfahren, um evtl. einen anderen Weg zu testen ?
Statistische Auswertungen per Zufall ;)
Aus welchem Grund stehen die Zahlen 1 - 60 in Zeile 5 ?
Hierbei gibt es keinen Grund, ist nur als Info das eben die Zahlen 1-60 per Zufall generiert werden sollen, evtl. hätte man es für den Code benötigt?
Vielen Dank,
Amina
Anzeige
was willst denn denn nun wirklich ?
18.01.2011 15:52:15
Matthias
Hallo
Du solltest schon wissen was Du willst !
Zitate:
Es dürfen sich Zufallszahlen wiederholen, aber nur maximal drei Zahlen pro Spalte. Muss aber keine Bedingung sein, also wenn sich Zahlen wiederholen sollten dann eben nur maximal drei Zahlen. ...
also pro Spalte sollen sich keine Zahlen wiederholen. Aber im gesamten blauen Bereich können sich maximal drei Zahlen wiederholen.

was willst denn denn nun wirklich ?


Das war also keine Fehler in meiner Datei, sondern es war ein Beispiel mit dem Ansatz,
wie Du da rangehen könntest.
Im unteren Bereich wird per ZählenWenn ausgewertet wie oft sich ein Wert in der Spalte B wiederholt
Bei einem Wert größer 3 bekommst Du in Spalte(1) per bedingter Formatierung eine Meldung.
Ist also der Max(Wert) größer 3 sollte das Makro wiederholt werden.


und wie stellst Du Dir das vor:
16x30 Zellen hat Dein blau umrahmter Bereich. Das sind 480 Zellen in denen ein Zufallswert stehen kann
Du wilst aber Zufallszahlen nur von 1-60 und zwar 1 bis 16 Zahlen pro Spalte!
Wie willst Du 480 Zellen mit Zufallszahlen bis max. 60 füllen, wenn sich im Bereich max. 3 Zahlen wiederholen dürfen ?
Also entweder hab ich Dich total falsch verstanden, oder Du hast einen Denkfehler.
Gruß Matthias
Anzeige
AW: was willst denn denn nun wirklich ?
18.01.2011 16:12:35
amintire
Hallo Matthias,
war natürlich mein Fehler es verständlich zu erklären ;)
Wenn mehr zahlen notwendig sind die sich wiederholen sollen geht das natürlich auch. Also wenn in einer Spalte z.B. 1-2-3 vorkommt könnten die sich in jeder Spalte wiederholen, können auch 4 oder 5 Zahlen sein. Aber in einer Spalte sollen dann verschiedene Zahlen sein (keine doppelten)
Gruß
Amina
Anzeige
mal als neuer Ansatz ...
18.01.2011 16:46:55
Matthias
Hallo Amina
Das lässt sich bestimmt auch schneller mit einer Schleife über alle Spalten und in einer Prozedur lösen.
Dies soll Dir nur einen Weg zeigen, wie Du das machen könntest.
https://www.herber.de/bbs/user/73133.xls
ist (Amina) eigentlich männl. oder weibl. ?
Gruß Matthias
Anzeige
AW: mal als neuer Ansatz ...
18.01.2011 16:53:36
amintire
Hallo Matthias,
das sieht schon mal gut aus, vielen lieben Dank dafür.
Werde dann die anderen Spalten weiterbearbeiten.
Amina ist ein weiblicher Name ;)
Gruß Amina
Korrektur !!
18.01.2011 17:36:49
Matthias
Hallo
Ich habe in der Datei noch einen Fehler endeckt !
Im unteren Bereich hatte ich immer nur mit Spalte B verglichen.
Somit sind "Doppelte" möglich.
Hier mal der neue Code und in einer Prozedur für alle Spalten (und korrigiert ...)
Option Explicit
Sub Zufall()
Dim schleife As Long, x As Long, MyWert, y As Long, SpZ As Long
Randomize
schleife = Range("B2").Value
Application.ScreenUpdating = False
For SpZ = 2 To 31
neu:
Range(Cells(8, SpZ), Cells(23, SpZ)).ClearContents
y = 8
For x = 1 To schleife
MyWert = Int((60 * Rnd) + 1)
Cells(y, SpZ).Value = MyWert
y = y + 1
Next
If Cells(25, SpZ)  1 Then GoTo neu
Next
Application.ScreenUpdating = True
End Sub
neue Bsp.Datei:
https://www.herber.de/bbs/user/73134.xls
bei 16 Zufallszahlen pro Spalte dauert es allerdings etwas länger!
Ansonsten sollte es aber funktionieren.
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zufallszahlen mit VBA generieren


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)" > Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Option Explicit
    Sub Zufall()
        Dim schleife As Long, x As Long, MyWert, y As Long, SpZ As Long
        Randomize
        schleife = Range("B2").Value
        Application.ScreenUpdating = False
        For SpZ = 2 To 31
            neu:
            Range(Cells(8, SpZ), Cells(23, SpZ)).ClearContents
            y = 8
            For x = 1 To schleife
                MyWert = Int((60 * Rnd) + 1)
                Cells(y, SpZ).Value = MyWert
                y = y + 1
            Next
            If Cells(25, SpZ) > 3 Then GoTo neu
        Next
        Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und kehre zu deiner Excel-Datei zurück.

  5. Gib in Zelle B2 die Anzahl der Zufallszahlen ein, die generiert werden sollen (maximal 16).

  6. Führe das Makro aus: Gehe zu Entwicklertools > Makros > wähle Zufall aus und klicke auf Ausführen.

Jetzt solltest du in den Zellen B8 bis B23 Zufallszahlen sehen, die nach deinem System generiert wurden.


Häufige Fehler und Lösungen

  • Fehler: Doppelte Zahlen in einer Spalte
    Lösung: Stelle sicher, dass die Bedingung in der Zeile If Cells(25, SpZ) > 3 Then GoTo neu korrekt ist. Dies sorgt dafür, dass nicht mehr als 3 gleiche Zahlen in einer Spalte erscheinen.

  • Fehler: Makro wird nicht ausgeführt
    Lösung: Überprüfe, ob die Entwicklertools in Excel aktiviert sind und ob du das Makro korrekt gestartet hast.


Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du auch Excel-Funktionen verwenden. Beispiel:

  • Verwende die Funktion =ZUFALLSBEREICH(1;60) in den gewünschten Zellen, um Zufallszahlen zwischen 1 und 60 zu generieren. Dies ist jedoch weniger flexibel, wenn du spezifische Anforderungen hast, z.B. keine doppelten Zahlen in einer Spalte.

Praktische Beispiele

  1. Zufallszahl zwischen 1 und 6:

    MyWert = Int((6 * Rnd) + 1)
  2. 4-stellige Zufallszahl:

    MyWert = Int((9999 * Rnd) + 1000)
  3. Zufallswert aus einer Liste: Wenn du eine Liste hast (z.B. A1:A10), kannst du =INDEX(A1:A10;ZUFALLSBEREICH(1;10)) verwenden.


Tipps für Profis

  • Wenn du eine zufällige 5-stellige oder 6-stellige Zahl generieren möchtest, kannst du die oben genannten Codes anpassen, um die gewünschte Anzahl an Ziffern zu berücksichtigen.
  • Nutze Application.ScreenUpdating = False, um die Verarbeitungsgeschwindigkeit zu erhöhen, besonders wenn du viele Zellen füllst.

FAQ: Häufige Fragen

1. Wie viele Zahlen kann ich maximal generieren?
Du kannst bis zu 16 Zufallszahlen pro Spalte generieren, abhängig von der Eingabe in Zelle B2.

2. Was passiert, wenn ich mehr als 60 Zahlen generieren möchte?
In diesem Fall wird der Code entsprechend angepasst, um die Grenze zu erhöhen, oder du kannst die Zahlenliste erweitern.

3. Kann ich das Hintergrundbild von Excel ändern?
Ja, du kannst das Hintergrundbild in Excel anpassen, jedoch musst du sicherstellen, dass es nicht wiederholt wird, um ein klares Layout zu erhalten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige