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

Forumthread: mehrere Zufallszahlen aus Bereich ohne Wiederholun

mehrere Zufallszahlen aus Bereich ohne Wiederholun
19.08.2008 22:05:38
Dieterlem
Hallo Excelfreunde,
ich suche eine VBA-Lösung für Zufallszahlen. Ich habe zwar einiges gefunden aber konnte ich es nicht nach meinen Anforderungen anpassen.
Ich will eine bestimmte Anzahl (per Variable veränderbar) von Zufallszahlen generieren (Ganzzahlen).
Dabei dürfen keine Wiederholungen vorkommen. Die Zufallszahlen müssen aus einem bestimmten Bereich stammen, die ebenfalls mit Variablen festgelegt werden sollen.
Die generierten Zufallszahlen sollen in einem Tabellenblatt angezeigt werden.
Beispiel:
13 Zufallszahlen als Ganzzahl aus dem Bereich 165 bis 498 ohne Wiederholung.
Gruß
Dieterlem

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Zufallszahlen aus Bereich ohne Wiederholun
19.08.2008 22:12:29
Ramses
Hallo
Dann schau dir mal die Funktion RND() in der Hilfe an, da ist unter anderm dieses beispiel
Rnd Function Example
This example uses the Rnd function to generate a random integer value from 1 to 6.
Dim MyValue
MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
und auch dieses
Remarks
The Rnd function returns a value less than 1 but greater than or equal to zero.
The value of number determines how Rnd generates a random number:
For any given initial seed, the same number sequence is generated because each successive call to the Rnd function uses the previous number as a seed for the next number in the sequence.
Before calling Rnd, use the Randomize statement without an argument to initialize the random-number generator with a seed based on the system timer.
To produce random integers in a given range, use this formula:
Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
Um zu prüfen ob die generierte Zahl schon mal vorhanden ist, kannst du die FIND()-Methode auf deinen Tabellenzielbereich anwenden, bevor du die Zahl einträgst
Gruss Rainer

Anzeige
AW: mehrere Zufallszahlen aus Bereich ohne Wiederholun
19.08.2008 22:48:37
ransi
HAllo Dieter
KAnnst du das nachvollziehen ?
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit



Public Sub geht()
Dim arr() As Variant
Dim L As Long
Dim I As Long
Dim tmp As Variant
Dim V As Long
Dim Z As Long
Dim Oben As Long
Dim Unten As Long
Dim W As Long
W = 13 'Wieviel Elemente
Unten = 165 'Untergrenze
Oben = 495 'Obergrenze
Redim arr(Oben - Unten)
For L = Unten To Oben 'Array mit Werten füllen
    arr(V) = L
    V = V + 1
Next
'#########
Randomize
'#########
For I = 0 To UBound(arr) 'Array mischen
    Z = Int(UBound(arr) * Rnd)
    tmp = arr(Z)
    arr(Z) = arr(I)
    arr(I) = tmp
Next
Redim Preserve arr(W) 'Die ersten 13 Werte im Array behalten
'Ausgewben
Range("A1").Resize(UBound(arr)) = WorksheetFunction.Transpose(arr)
End Sub

ransi

Anzeige
AW: mehrere Zufallszahlen aus Bereich ohne Wiederholun
19.08.2008 23:17:19
Dieterlem
Hallo Ramses,
ich habe dein Vorschlag getestet. Es funktioniert so wie ich es mir vorgestellt habe. Auf diese Weise Zufallszahlen ohne Wiederholungen zu erzeugen ist sehr elegant.
Danke für deine Mühe.
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zufallszahlen aus einem Bereich ohne Wiederholungen in Excel generieren


Schritt-für-Schritt-Anleitung

Um mehrere Zufallszahlen aus einem bestimmten Bereich ohne Wiederholung in Excel zu generieren, kannst Du eine VBA-Lösung verwenden. Folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen > Modul.
  3. Füge den folgenden Code ein:

    Public Sub GeneriereZufallszahlen()
       Dim arr() As Variant
       Dim L As Long, I As Long, tmp As Variant
       Dim V As Long, Z As Long
       Dim Oben As Long, Unten As Long
       Dim W As Long
    
       W = 13 ' Anzahl der Zufallszahlen
       Unten = 165 ' Untergrenze
       Oben = 498 ' Obergrenze
       ReDim arr(Oben - Unten)
    
       ' Array mit Werten füllen
       For L = Unten To Oben
           arr(V) = L
           V = V + 1
       Next
    
       Randomize ' Initialisiere den Zufallszahlengenerator
    
       ' Array mischen
       For I = 0 To UBound(arr)
           Z = Int(UBound(arr) * Rnd)
           tmp = arr(Z)
           arr(Z) = arr(I)
           arr(I) = tmp
       Next
    
       ' Die ersten W Werte im Array behalten
       ReDim Preserve arr(W)
       ' Ausgabe in das Tabellenblatt
       Range("A1").Resize(UBound(arr) + 1) = WorksheetFunction.Transpose(arr)
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle GeneriereZufallszahlen und klicke auf Ausführen.

Die generierten Zufallszahlen werden in den Zellen A1 bis A13 angezeigt. Du kannst die Variablen Unten, Oben und W anpassen, um den Bereich und die Anzahl der Zufallszahlen zu ändern.


Häufige Fehler und Lösungen

  • Fehler: Das Makro läuft nicht.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Trust Center-Einstellungen > Makroeinstellungen und aktiviere die Makros.
  • Fehler: Es werden weniger Zufallszahlen als erwartet generiert.

    • Lösung: Überprüfe die Werte der Variablen W, Unten und Oben. Stelle sicher, dass Unten und Oben einen ausreichenden Bereich für die gewünschten Zufallszahlen bieten.

Alternative Methoden

Neben der VBA-Lösung kannst Du auch die RANDBETWEEN-Funktion verwenden, um Zufallszahlen zu generieren. Beachte jedoch, dass diese Methode keine Wiederholungen garantieren kann.

Ein Beispiel für die Verwendung der RANDBETWEEN-Funktion:

=RANDBETWEEN(165; 498)

Um die Wiederholung zu vermeiden, kannst Du eine Hilfsspalte verwenden, um die generierten Zahlen zu überprüfen.


Praktische Beispiele

  • Beispiel: Generiere 5 Zufallszahlen aus dem Bereich 1 bis 100:

    • Setze W = 5, Unten = 1 und Oben = 100 im VBA-Code.
  • Beispiel: Verwende die RANDBETWEEN-Funktion in Excel:

    • In Zelle A1: =RANDBETWEEN(1; 100)
    • Kopiere die Formel nach unten, um mehrere Zufallszahlen zu generieren, und verwende die EINDEUTIGEN-Funktion, um Duplikate zu entfernen.

Tipps für Profis

  • Nutze die Randomize-Anweisung vor der Verwendung der Rnd-Funktion, um sicherzustellen, dass Du bei jedem Ausführen des Makros unterschiedliche Zufallszahlen erhältst.
  • Speichere Deine Excel-Datei im Makro-aktivierten Format (*.xlsm), um den VBA-Code zu behalten.
  • Experimentiere mit den Grenzen und der Anzahl der Zufallszahlen, um verschiedene Ergebnisse zu erzielen.

FAQ: Häufige Fragen

1. Kann ich den VBA-Code anpassen? Ja, Du kannst die Variablen Unten, Oben und W ändern, um andere Bereiche und Anzahlen von Zufallszahlen zu generieren.

2. Funktioniert dieser Code auch in Excel Online? Nein, VBA ist nur in Desktop-Versionen von Excel verfügbar. In Excel Online kannst Du keine Makros verwenden.

3. Was ist der Unterschied zwischen RANDBETWEEN und der Rnd-Funktion? RANDBETWEEN ist eine Excel-Funktion, die Zufallszahlen in einem bestimmten Bereich erzeugt, während die Rnd-Funktion in VBA verwendet wird, um Zufallszahlen zu generieren und mehr Kontrolle über den Prozess bietet.

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