182 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

Ich bin ein absoluter Excel Anfänger und versuche gerade folgendes

In Zelle A2 steht bei mir ein Wert „1“ für Grundgesamtheit von

Und in Zelle B2 steht zb „2000“für grundgesamtheit bis

In Zelle c2 steht „50“ für 50 zufällige Zahlen aus dem o.g. Zahlenbereich

die ausgegebenen zahlen sollen keine doppelten Werte enthalten und in Zelle „A7 ff. ausgewiesen werden .

Im Idealfall kann ich die grundgesamtheit von bis noch über eine andere Zelle variabel machen also dass wenn ich in z1 die Zahl änder in A2 ändert und bei b2 auch.

Kann mir das irgendwer schreiben? Ich hab keine Ahnung wie ich das hinbekommen soll

2 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo,

der folgende Code gehört in ein Standardmodul deiner Arbeitsmappe:

Sub zufallszahlen()
Dim lngAnzahl As Long
Dim lngAnzahlUO As Long
Dim arrZufallszahlen() As Long
Dim lngUntergrenze As Long
Dim lngObergrenze As Long
Dim lngLetzte As Long
Dim i As Long
Dim t As Long
Dim zTemp As Long
Dim lngZaehler As Long

'letzte beschriebene Zeile in Spalte A ermitteln
lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

'Falls letzte Zeile größer 6, dann Bereich ab Zelle A7 löschen
If lngLetzte > 6 Then
   Range("A7:A" & lngLetzte).ClearContents
End If

'Untergrenze einlesen
lngUntergrenze = Range("A1").Value
'Obergrenze einlesen
lngObergrenze = Range("A2").Value
'Anzahl der Zufallszahlen einlesen
lngAnzahl = Range("C2").Value
'Anzahl der Zahlen zwischen Untergrenze und Obergrenze ermitteln und um 1 erhöhen, da Untergrenze ja auch Zufallszahl sein soll
lngAnzahlUO = lngObergrenze - lngUntergrenze + 1
'Feld für Zufalls redimensioren
ReDim arrZufallszahlen(lngAnzahlUO)

'zuerst einmal alle Zahlen zwischen Untergrenze und Obergrenze in Feld schreiben
For i = lngUntergrenze To lngObergrenze
  lngZaehler = lngZaehler + 1
  arrZufallszahlen(lngZaehler) = i
Next i

'nun alle Zahlen zufällig mischen
For i = lngAnzahlUO To 1 Step -1
  Randomize Timer
  t = Int((i * Rnd) + 1)
  zTemp = arrZufallszahlen(t)
  arrZufallszahlen(t) = arrZufallszahlen(i)
  arrZufallszahlen(i) = zTemp
Next i

'nun die gewünschte Anzahl von Zahlen ausgeben
For i = 1 To lngAnzahl
  Cells(6 + i, 1) = arrZufallszahlen(i)
Next i

End Sub

Das Makro kannst du über die Entwicklertools - Makros starten oder z.B. einer Befehlsschaltfläche zuordnen.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo, das werde ich Am Wochenende direkt machen. Vielen Dank dir
...