Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige