Microsoft Excel

Herbers Excel/VBA-Archiv

Zufallszahl

Betrifft: Zufallszahl von: René
Geschrieben am: 22.03.2008 20:33:07

Hi Leute

Ich versuche gerade herauszubekommen, wie ich die Zahlen von 1 bis 26 zufällig auf die Zellen C4 bis C29 verteilen kann.
Jede Zahl darf nur einmal vorkommen.
Irgendwie hat mir folgender Code nicht weiter geholfen, da gibts zuviel Dopplungen.



Sub Zufallszahl()
'
Dim i, ZFZ As Integer
'
Randomize
'
For i = 1 To 26
  ZFZ = Int((26 * Rnd) + 1)
    Cells(3 + i, 3) = ZFZ
Next i
'
End Sub



Hat jemand ne Idee wie man das abändern kann?

Gruß René

  

Betrifft: Zufallszahlen ohne Doppler von: WF
Geschrieben am: 22.03.2008 20:48:29

Hi René,

schreibe in A1 =ZUFALLSZAHL()
kopieren bis A26

in C4 schreibst Du:
=VERGLEICH(KKLEINSTE(A$1:A$26;ZEILE(A1));A$1:A$26;0)
kopieren bis C29

Salut WF


  

Betrifft: AW: Zufallszahlen ohne Doppler von: René
Geschrieben am: 22.03.2008 20:54:00

Hi WF

Jo, das isses, danke :-)


  

Betrifft: Zufallszahl einmalig mit RANG - VBA von: Beate Schmitz
Geschrieben am: 22.03.2008 20:51:11

Hallo René,

ich gehe in meinem Code davon aus, dass du Spalte IV nicht benutzt, die wird nämlich im Code temporär als Hilfsspalte eingesetzt:

Sub Zufall()
    Application.ScreenUpdating = False
    Range("IV4:IV29").FormulaR1C1 = "=RAND()"
    Range("IV4:IV29").Value = Range("IV4:IV29").Value
    Range("C4").Select
    Range("C4:C29").FormulaR1C1 = "=RANK(RC[253],R4C[253]:R[22]C[253])"
    Range("C4:C29").Value = Range("C4:C29").Value
    Range("IV4:IV29").ClearContents
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub



Dabei werden in den entsprechenden Zeilen in Spalte IV Zufallszahlen eingesetzt. Diese nach Rang ausgewertet in Spalte C und anschließend Spalte IV wieder geleert.

Gruß.
Beate


  

Betrifft: Korrektur von: Beate Schmitz
Geschrieben am: 22.03.2008 21:01:46

Hallo René,

in meinem Code war ein Fehler. Hier der Ersatz:

Sub Zufall()
    Application.ScreenUpdating = False
    Range("IV4:IV29").FormulaR1C1 = "=RAND()"
    Range("IV4:IV29").Value = Range("IV4:IV29").Value
    Range("C4:C29").FormulaR1C1 = "=RANK(RC[253],R4C[253]:R29C[253])"
    Range("C4:C29").Value = Range("C4:C29").Value
    Range("IV4:IV29").ClearContents
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub
Sub Makro4()


Gruß,
Beate


  

Betrifft: AW: Zufallszahl von: Sonnenpeter
Geschrieben am: 22.03.2008 20:51:46

Hallo,

hier ein Makro von H.W. Herber

StandardModule: basMain

Sub Zufall()
   Dim rng As Range, rngAll As Range
   Dim iRandomize As Integer
   Set rngAll = Range("A1:E5")
   Randomize
   rngAll.ClearContents
   For Each rng In rngAll.Cells
      iRandomize = Int((25 * Rnd) + 1)
      Do Until WorksheetFunction.CountIf(rngAll, iRandomize) = 0
         iRandomize = Int((25 * Rnd) + 1)
      Loop
      rng.Value = iRandomize
   Next rng
End Sub



Gruß Sonnenpeter


  

Betrifft: AW: Zufallszahl von: René
Geschrieben am: 22.03.2008 20:56:16

Hallo Leute

Danke an alle.
Mit dem VBA bin ich nicht so dolle bewandert, was nicht heisst das man das ja zum Lernen sich ansehen kann.

Grüße aus Leipzig, René


 

Beiträge aus den Excel-Beispielen zum Thema "Zufallszahl"