VBA Zufallszahlen ohne Wiederholung

Bild

Betrifft: VBA Zufallszahlen ohne Wiederholung
von: Bonduca01
Geschrieben am: 26.10.2015 13:13:15

Hallo,
ich habe in Tabelle A Spalte I Zahlen zwischen 1-2000.
In Tabelle B Spalte I sollen Zufallszahlen zwischen 1000-2000 geschrieben werden. Diese sollen nicht doppelt vorkommen und auch nicht mit den Zahlen aus Tabelle A Spalte I übereinstimmen.
Den Code, den ich habe gibt mir zwar Zufallszahlen aus, berücksichtigt aber nicht, dass keine doppelten ausgegeben werden dürfen und dass diese Zahlen nicht mit Tabelle A Spalte I übereinstimmen dürfen.

Sub Zufallszahlen_rekombination()
Dim Zahl1 As Variant
Dim Zahl2 As Variant
Untergrenze = 1000
Obergrenze = 2000
Worksheets("B").Activate
For i = 1 To 200
Randomize Timer
Sheets("B").Cells(26 + i, 9) = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
Next i
End Sub
Kann mir hiermit jemand helfen?
Vielen Dank!

Bild

Betrifft: AW: VBA Zufallszahlen ohne Wiederholung
von: ede
Geschrieben am: 26.10.2015 13:29:53
Hallo,
anbei mal Deine Code um die beiden Prüfschleifen erweitert


Sub Zufallszahlen_rekombination()
Dim Zahl1 As Variant
Dim Zahl2 As Variant
Dim zz As Variant
Untergrenze = 1000
Obergrenze = 2000
Worksheets("B").Activate
For i = 1 To 200
    Randomize Timer
    zz = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
    flag = True
    
    'Prüfe ob in Tabelle "A" ist
    For ii = 1 To 2000
        If Sheets("A").Cells(ii, 9) = zz Then
            'bereits in Tabelle "A"  vorhanden
            flag = False
        End If
    Next ii
    
    'Prüfe ob in Tabelle "B" ist
    For ii = 1 To ii
        If Sheets("B").Cells(ii + 26, 9) = zz Then
             'bereits in Tabelle "B"  vorhanden
            flag = False
        End If
    Next ii
    ' vorhandaen?
    If flag Then
        'wegschreiben
        Sheets("B").Cells(26 + i, 9) = zz
    Else
        'schleife eins zurück, da zz schon vorhanden
        i = i - 1
    End If
Next i
End Sub

Gruss

Bild

Betrifft: AW: VBA Zufallszahlen ohne Wiederholung
von: Bonduca01
Geschrieben am: 27.10.2015 17:31:28
Funktioniert wie geschmiert!
Vielen, vielen Dank!!!!!
:D

Bild

Betrifft: AW: VBA Zufallszahlen ohne Wiederholung
von: Rudi Maintaire
Geschrieben am: 26.10.2015 13:30:43
Hallo,

Sub Zufallszahlen_rekombination()
  Dim Zahl1 As Variant
  Dim i As Integer
  
  Const Untergrenze = 1000
  constObergrenze = 2000
  Worksheets("B").Activate
  Do While i < 200
    Randomize Timer
    Zahl1 = Int((Obergrenze - Untergrenze + 1) * Rnd + Untergrenze)
    If WorksheetFunction.CountIf(Sheets("A").Columns(9), Zahl1) = 0 _
      And WorksheetFunction.CountIf(Sheets("B").Columns(9), Zahl1) = 0 Then
        Sheets("B").Cells(27 + i, 9) = Zahl1
        i = i + 1
    End If
  Loop  
End Sub

Gruß
Rudi

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Zufallszahlen ohne Wiederholung"