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

Zufallszahlen

Forumthread: Zufallszahlen

Zufallszahlen
Werner
Hallo zusammen,
ich schaffe es nicht, Zufallszahlen aus einem bestimmten Bereich sortiert darzustellen.
Was ich brauche ich folgendes:
In A1 bis A4 sollen zufällig generierte ganze Zahlen aus dem Bereich 20 bis 29 stehen.
Weitere Bedingungen:
Es darf jede Zahl nur einmal vorkommen.
Die Zahlen sollen aufsteigend sortiert sein.
Ist sowas möglich?
Gruß und vielen Dank im Voraus
Werner
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
mit VBA
12.11.2010 12:03:32
Tino
Hallo,
ich habe es mal so versucht.
Sub Zufallszahlen()
Dim rngBereich As Range
Dim varArray(), intZahl As Integer
Dim nCount As Long, lngMax As Long

Const intUT As Integer = 20
Const intOT As Integer = 29

Set rngBereich = Range("A1:A4")

Redim Preserve varArray(1 To rngBereich.Rows.Count, 1 To 1)
lngMax = Ubound(varArray)

With Application
    Do
        intZahl = Int((intOT - intUT + 1) * Rnd + intUT)
        If Not IsNumeric(.Match(intZahl, varArray, 0)) Then
            nCount = nCount + 1
            varArray(nCount, 1) = intZahl
        End If
    Loop Until nCount = lngMax
End With

With rngBereich
    .Value = varArray
    .Sort .Cells(1, 1), Order1:=xlAscending, Header:=xlNo
End With

End Sub
Gruß Tino
Anzeige
AW: ohne VBA
12.11.2010 20:38:30
IngoG
Hallo Werner,
so sollte es auch funzen:
in a1:a10 steht jeweils die formel:
=zufallszahl()

in B1 bis B4 die Matrix-Formel:
=19+KKLEINSTE(RANG($A$1:$A$4;$A$1:$A$10);Zeile())
(Eingabe abschliessen mit Strg-Shift-Enter)
Gruß Ingo
PS eine Rückmeldung wäre nett...
Anzeige
AW: Zufallszahlen
12.11.2010 17:04:49
Peter
Hallo Werner,
noch eine VBA-Lösung
Public Sub VierAusZehn()
Dim aWerte   As Variant
Dim iAnzahl  As Integer
Dim iIndex   As Integer
Dim iZufall  As Integer
Dim lZeile   As Long
   
   aWerte = Array(20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
   
   Randomize Timer                              ' 'Mischen'
      
   iAnzahl = UBound(aWerte)                     ' der max. Array-Index am Anfang
   
   With ThisWorkbook.Worksheets("Tabelle1")     ' den Tabellenblattnamen ggf. anpassen
      For iIndex = 0 To 3                       ' 4 Elemente ziehen (Alle via: To UBound(aWerte))
         iZufall = Int(Rnd() * iAnzahl)         ' eine Zufallszahl zwischen 0 und iAnzahl ziehen
         lZeile = lZeile + 1                    ' den Zeilen-Index hochrechnen
         .Range("A" & lZeile) = aWerte(iZufall) ' Ergebnis im Tabellenblatt ausgeben
         aWerte(iZufall) = aWerte(iAnzahl)      ' das 'letzte' Element umkopieren
         iAnzahl = iAnzahl - 1                  ' den Max-Index um eins erniedrigen
      Next iIndex
      .Range("A1:A4").Sort .Cells(1, 1), Order1:=xlAscending, Header:=xlNo
   End With
   
End Sub
Gruß Peter
Anzeige
;

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