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

Forumthread: Nur ungerade Zufallszahlen generieren

Nur ungerade Zufallszahlen generieren
13.04.2015 08:09:52
erichm
Hallo,
ich habe im Forum bereits viel über die Generierung von Zufallszahlen per VBA gefunden.
Jedoch suche ich nach einer Lösung, bei der zwischen 0 und 1000 nur die ungeraden Zahlen in 50 Spalten aufgeführt werden (und dann für ca. 100 Zeilen).
Ich könnte natürlich die Spaltenanzahl verdoppeln oder verdreifachen und dann jeweils 50 ungerade Zahlen im zweiten oder dritten Schritt ermitteln. Aber da besteht die Gefahr von Wiederholungen und ist etwas umständlich.
FRAGE: Kann man auch ausschließlich nur ungerade Zahlen per VBA (oder auch per Formel) erstellen?
Danke.
mfg

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur ungerade Zufallszahlen generieren
13.04.2015 08:29:13
Daniel
Hi
Für ungerade Zufallszahlen von 1 - 999 mit der Formel
=ZufallsBereich(0;499)*2+1
Gruß Daniel

AW: Nur ungerade Zufallszahlen generieren
14.04.2015 07:30:30
erichm
DANKE für die Lösung!

AW: Nur ungerade Zufallszahlen generieren
13.04.2015 08:30:49
Nepumuk
Hallo,
so?
Public Sub Zufall()
    
    Dim lngIndex1 As Long, lngIndex2 As Long
    Dim lngColumn As Long, lngRow As Long
    Dim lngTemp As Long, alngOutput(99, 0) As Long
    Dim alngArray(499) As Long, ialngIndex As Long
    
    Randomize
    
    Application.ScreenUpdating = False
    
    For ialngIndex = 0 To 499
        alngArray(ialngIndex) = ialngIndex
    Next
    
    For lngColumn = 1 To 50
        
        For lngIndex1 = 499 To 0 Step -1
            lngIndex2 = Int((lngIndex1 * Rnd) + 1)
            lngTemp = alngArray(lngIndex2)
            alngArray(lngIndex2) = alngArray(lngIndex1)
            alngArray(lngIndex1) = lngTemp
        Next
        
        For lngRow = 0 To 99
            
            alngOutput(lngRow, 0) = alngArray(lngRow)
            
        Next
        
        Range(Cells(1, lngColumn), Cells(100, lngColumn)).Value = alngOutput
        
    Next
    
    Application.ScreenUpdating = True
    
End Sub

Gruß
Nepumuk

Anzeige
Noch ein Fehler drin
13.04.2015 08:37:29
Nepumuk
Hallo,
so:
Public Sub Zufall()
    
    Dim lngIndex1 As Long, lngIndex2 As Long
    Dim lngColumn As Long, lngRow As Long
    Dim lngTemp As Long, alngOutput(99, 0) As Long
    Dim alngArray(499) As Long, ialngIndex As Long
    
    Randomize
    
    Application.ScreenUpdating = False
    
    For lngIndex1 = 1 To 999 Step 2
        alngArray(ialngIndex) = lngIndex1
        ialngIndex = ialngIndex + 1
    Next
    
    For lngColumn = 1 To 50
        
        Randomize
        
        For lngIndex1 = 499 To 0 Step -1
            lngIndex2 = Int((lngIndex1 * Rnd))
            lngTemp = alngArray(lngIndex2)
            alngArray(lngIndex2) = alngArray(lngIndex1)
            alngArray(lngIndex1) = lngTemp
        Next
        
        For lngRow = 0 To 99
            
            alngOutput(lngRow, 0) = alngArray(lngRow)
            
        Next
        
        Range(Cells(1, lngColumn), Cells(100, lngColumn)).Value = alngOutput
        
    Next
    
    Application.ScreenUpdating = True
    
End Sub

Gruß
Nepumuk

Anzeige
AW: Noch ein Fehler drin
14.04.2015 07:30:06
erichm
DANKE - klappt perfekt!!

AW: Nur ungerade Zufallszahlen generieren
13.04.2015 08:31:02
EtoPHG
Hallo Erich M.
=UNGERADE(ZUFALLSBEREICH(1;999))
Gruess Hansueli

AW: Nur ungerade Zufallszahlen generieren
13.04.2015 08:39:37
EtoPHG
Hallo nochmal:
Zitat: Aber da besteht die Gefahr von Wiederholungen und ist etwas umständlich.
1. Die 'Gefahr' besteht bei Zufallszahlen immer, ausser sie werden explicit verhindert.
2. bei 50*100 = 5000 Zufallszahlen ist das keine Gefahr mehr, sondern zwingend gegeben, das im Schnitt jede ungerade Zufallszahl zwischen 1...999 10 x vorkommt!
Guress Hansueli

Anzeige
AW: Nur ungerade Zufallszahlen generieren
14.04.2015 07:26:10
erichm
DANKE für die Alternative!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ungerade Zufallszahlen in Excel generieren


Schritt-für-Schritt-Anleitung

Um in Excel ungerade Zufallszahlen zu generieren, kannst du verschiedene Methoden verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung für die Verwendung von Formeln und VBA.

Mit der Formel:

  1. Öffne Excel und wähle eine Zelle aus, in der die Zufallszahl erscheinen soll.
  2. Gib die folgende Formel ein, um eine ungerade Zufallszahl zwischen 1 und 999 zu generieren:
    =ZufallsBereich(0;499)*2+1
  3. Drücke die Eingabetaste. Diese Formel erzeugt eine ungerade Zahl.

Mit VBA:

  1. Öffne den Visual Basic Editor (Alt + F11).
  2. Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Kopiere den folgenden VBA-Code und füge ihn ein:

    Public Sub Zufall()
       Dim lngIndex1 As Long, lngIndex2 As Long
       Dim lngColumn As Long, lngRow As Long
       Dim alngOutput(99, 0) As Long
       Dim alngArray(499) As Long, ialngIndex As Long
    
       Randomize
       Application.ScreenUpdating = False
    
       For lngIndex1 = 1 To 999 Step 2
           alngArray(ialngIndex) = lngIndex1
           ialngIndex = ialngIndex + 1
       Next
    
       For lngColumn = 1 To 50
           For lngRow = 0 To 99
               alngOutput(lngRow, 0) = alngArray(Int(Rnd * 500))
           Next
           Range(Cells(1, lngColumn), Cells(100, lngColumn)).Value = alngOutput
       Next
    
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den Editor und führe das Makro aus (Alt + F8).

Häufige Fehler und Lösungen

  • Fehler: Die Formel gibt auch gerade Zahlen zurück.

    • Lösung: Stelle sicher, dass die Formel korrekt eingegeben ist: =ZufallsBereich(0;499)*2+1.
  • Fehler: VBA-Code gibt keine Zahlen aus.

    • Lösung: Überprüfe die Range-Angabe im Code und stelle sicher, dass die Zellen in deinem Arbeitsblatt vorhanden sind.

Alternative Methoden

Falls du die Gefahr von Wiederholungen vermeiden möchtest, kannst du die folgende Formel verwenden:

=UNGERADE(ZUFALLSBEREICH(1;999))

Diese Formel stellt sicher, dass du nur ungerade Zufallszahlen erhältst. Beachte, dass die Möglichkeit besteht, dass jede ungerade Zahl mehrfach erscheint, besonders bei großen Datenmengen.


Praktische Beispiele

  1. Ungerade Zahlen bis 100: Verwende die Formel:

    =ZufallsBereich(1;50)*2-1

    Dies gibt dir ungerade Zahlen zwischen 1 und 99.

  2. Ungerade Zahlen bis 1000: Nutze:

    =ZufallsBereich(1;500)*2-1

    Dies erzeugt ungerade Zahlen zwischen 1 und 999.

  3. Zufallszahlen in mehreren Spalten: Mit dem VBA-Code kannst du in 50 Spalten ungerade Zufallszahlen für 100 Zeilen generieren.


Tipps für Profis

  • Um sicherzustellen, dass jede ungerade Zufallszahl nur einmal generiert wird, kannst du eine Liste aller ungeraden Zahlen erstellen und diese dann zufällig mischen.
  • Nutze die Funktion Zufallszahl(), um eine Zufallszahl zwischen 0 und 1 zu generieren und multipliziere sie mit deinem gewünschten Bereich, um die Flexibilität zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass eine ungerade Zufallszahl zwischen 1 und 10 generiert wird? Du kannst die Formel =ZufallsBereich(1;5)*2-1 verwenden, um dies zu erreichen.

2. Ist es möglich, eine Zufallszahl zwischen 1 und 100 zu generieren, die ungerade ist? Ja, die Formel =ZufallsBereich(1;50)*2-1 gibt dir ungerade Zahlen zwischen 1 und 99 zurück.

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