• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Lijst met willekeurige getallen met controle

Status
Niet open voor verdere reacties.

ferryvdm

Gebruiker
Lid geworden
1 mrt 2012
Berichten
19
Goedemiddag,

Ik wil graag een lijst maken met willekeurige getallen. Zo komt in vakje B1 een willekeurig getal tussen 0 en 9.
In vakje B2 komt een willekeurig tussen 0 en 9 maar dat mag niet B1 zijn. In vakje B3 komt een willekeurig getal tussen 0 en 9 maar dat mag niet B1 of B2 zijn.
Enz. enz.

Zo wil ik een lijst maken met tien willekeurige getallen tussen 0 en 9.

Heeft iemand een idee?

FerryBekijk bijlage willekeur.xlsx
 
mag het met een macro?

Code:
Sub randrange()
    Dim lijst As New Collection

    For i = 0 To 9
        lijst.Add (i)
    Next i
    
    Randomize
    
    For i = 1 To 10
        tel = Int(Rnd() * lijst.Count) + 1
        Cells(i, 2).Value = lijst(tel)
        lijst.Remove (tel)
    Next i

End Sub
 
Laatst bewerkt:
Bovenstaande oplossing van Wampier werkt perfect. Dank.

Nu zou ik graag willen dat deze procedure herhaald wordt tot in cel N2 staat HOERA.

Ik dacht dat op de volgende manier te doen maar iedere keer stopt excel met reageren.
Is de code wel goed of hebben jullie een betere oplossing?

Code:
Sub uitkomst()


        Do
        Dim lijst As New Collection

        For i = 0 To 9
        lijst.Add (i)
        Next i
    
        Randomize
    
        For i = 1 To 10
        tel = Int(Rnd() * lijst.Count) + 1
        Cells(i, 2).Value = lijst(tel)
        lijst.Remove (tel)
        Next i
        Loop Until ("N2") = "HOERA"
    End Sub
 
of
Code:
Sub M_random_unieke_getallen_snb()
    Randomize
    ReDim sn(8, 0)
    
    For j = 0 To UBound(sn)
       sn(j, 0) = Rnd
    Next
    
    With Sheets(1).Cells(1).Resize(UBound(sn) + 1)
        .Name = "snb"
        .Value = sn
        .Value = [index(rank(snb,snb),)]
    End With
End Sub
 
De code blijft hangen omdat n2 nooit "hoera" wordt. Als je een bepaalde oplossing wil testen zul je dat in de routine moeten doen, of excel de kans moeten geven om updates door te voeren. Zolang een routine loopt wordt alle normale excel activiteit opgeschort.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan