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

Forumthread: Spalte per Zufall mit Zahlen zwischen 1 -9 füllen

Spalte per Zufall mit Zahlen zwischen 1 -9 füllen
Sebastian
Hallo Leute,
ich brauche ein Makro, das mir in Spalte A1:A10 per Zufall die Zahlen 1-9 füllt. Die Zahlen dürfen nicht doppelt vergeben sein.
Ist sowas möglich. Wenn ja wie?
Vielen Dank für Hilfe
Besten Dank
Sebastian
Anzeige
und was kommt in die 10. Zelle ?
31.05.2010 17:59:53
Matthias
Hallo

A1:A10 sind 10 Zellen
1-9 willst Du vergeben, Da klappt was nicht!
Gruß Matthias
AW: Spalte per Zufall mit Zahlen zwischen 1 -9 füllen
31.05.2010 18:10:31
Oberschlumpf
Hi Sebastian
Matthias Frage ist berechtigt. Ich "antworte", dass die 0 eingetragen werden muss.
Hier mein Code:
(alles muss ins allg. Modul)
Sub sbZufzahl()
Dim liZufzahl As Integer
Sheets(1).Range("A1:A10").Value = ""
Do Until fcIsEmpty = False
Randomize
liZufzahl = Int((10 * Rnd))
sbOnly liZufzahl
Loop
End Sub
Function fcIsEmpty() As Boolean
Dim liRow As Integer
For liRow = 1 To 10
If Sheets(1).Range("A" & liRow).Value = "" Then
fcIsEmpty = True
Exit For
End If
Next
End Function
Sub sbOnly(ByVal zufzahl As Integer)
Dim liRow As Integer, lboTreffer As Boolean, liNext As Integer
If Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row = 1 And Sheets(1).Range("A1").Value = "" _
Then
liNext = 1
Else
liNext = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
For liRow = 1 To 10
If Sheets(1).Range("A" & liRow).Value = zufzahl And _
Sheets(1).Range("A" & liRow).Value  "" Then
lboTreffer = True
Exit For
End If
Next
If lboTreffer = False Then
Sheets(1).Range("A" & liNext).Value = zufzahl
End If
End Sub

Starte über Extras/Makro/Makros das Makro sbZufzahl.
Hilfts?
Ciao
Thorsten
Anzeige
AW: Spalte per Zufall mit Zahlen zwischen 1 -9 füllen
31.05.2010 18:37:41
Sebastian
Genau das habe ich gesucht. :-)
Vielen Dank auch!!!!!
na wenigstens hast Du eine Antwort erhalten oT
31.05.2010 19:22:47
Matthias
Zufallszahlen in Spalte A ausgeben
31.05.2010 18:12:01
NoNet
Hallo Sebastian,
teste mal folgendes Makro :
Sub ZufallszahlenSpalteA10()
Dim lngZahl(1 To 10), lngZ As Long
For lngZ = LBound(lngZahl) To UBound(lngZahl)
Randomize Timer
lngZahl(lngZ) = Rnd()
Next
For lngZ = LBound(lngZahl) To UBound(lngZahl)
Cells(lngZ, 1) = Application.Match(Application.Small(lngZahl, lngZ), lngZahl, 0)
Next
End Sub
Gruß, NoNet
Anzeige
AW: Zufallszahlen in Spalte A ausgeben
31.05.2010 18:39:08
Sebastian
Das geht auch,
vor allem mit minimaleren aufwand. Vielen Dank
na wenigstens hast Du eine Antwort erhalten oT
31.05.2010 19:23:10
Matthias
@NoNet & Thorsten
31.05.2010 21:01:08
ChristianM
Hi Leute,
zugegeben, bei 10 Zeilen ist das natürlich nicht erheblich. Bei 1000, 10000 und mehr wäre es schon spannender.
Mein Vorschlag:

Option Explicit
Sub RandomUniqueNumbers()
Dim i&, r&, lngRes&()
Dim hsh As Object, vntKeys
Const CNT As Long = 10
Columns(1).Clear
ReDim lngRes(CNT - 1)
Set hsh = CreateObject("Scripting.Dictionary")
For i = 0 To CNT - 1
hsh(i) = 0
Next
Randomize
For i = 0 To CNT - 1
r = Int(hsh.Count * Rnd)
vntKeys = hsh.Keys
lngRes(i) = vntKeys(r)
hsh.Remove vntKeys(r)
Next
Cells(1, 1).Resize(CNT) = Application.Transpose(lngRes)
End Sub
Gruß
Christian
Anzeige
AW: Spalte per Zufall mit Zahlen zwischen 1 -9 füllen
01.06.2010 07:25:04
Daniel
HI
hier ne Lösung ohne Makro, Wiederholungen sind ausgeschlossen und auch grösste Datenmengen werden in Sekundenbruchteilen abgearbeitet.
1. in A1:A10 die Zahlenreihe 0-9 eintragen (z.B. über einfügen - Reihe oder =Zeile()-1 mit anschließenden Kopieren - Inhalte einfügen - Werte)
2. in B1:B10 die Formel = Zufallszahl() eintragen
3. Bereich A1:B10 nach Spalte B sortiern
4. Spalte B löschen.
als Makro:
With Range("A1:B10")
.Columns(1).FormulaLocal="=Zeile()-1"
.Columns(2).FormulaLocal="=Zufallszahl()"
.formula = .value
.Sort Key1:=.Cells(1,2), order1:=xlascending, Header:=xlno
.Columns(2).ClearContents
End with

Gruß, Daniel
Anzeige
AW: Spalte per Zufall mit Zahlen zwischen 1 -9 füllen
01.06.2010 08:48:29
bst
Morgen auch,
noch ein Vorschlag. Ohne Sortieren, ohne nach Doppelten zu suchen und auch ganz ohne Dictionary.
Einfach nur Tauschen.
cu, Bernd
--
Option Explicit

Sub x()
    Const N As Integer = 10
    Dim ar(1 To N) As Integer
    Dim i As Integer, j As Integer, h As Integer
    
    Randomize
    For i = 1 To N
        ar(i) = i
    Next
    
    For i = N To 1 Step -1
        j = Int(i * Rnd() + 1)
        h = ar(j)
        ar(j) = ar(i)
        ar(i) = h
    Next
    
    Cells(1).Resize(N) = WorksheetFunction.Transpose(ar)
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
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