Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

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
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
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

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige