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

Specifieke cellen toewijzen voor willekeurige waarde

Status
Niet open voor verdere reacties.

Schiavoni

Nieuwe gebruiker
Lid geworden
25 jun 2018
Berichten
4
Goedemiddag,

Ik ben bezig in Excel met een VBA-code, die in cellen willekeurige waarden weergeeft. Nu zou ik graag willen dat deze waarden in een bepaald cellobereik (bijvoorbeeld B5:D5) worden weergegeven.

Kan iemand mij hier verder mee helpen? Ik krijg de willekeurige waarden wel onder elkaar, maar niet dat de waarden in verschillende cellen wordt weergegeven.

Met vriendelijke groet,

Schiavoni
 
Laat eens zien wat je hebt tot nu toe.
 
Laat eens zien wat je hebt tot nu toe.
De code komt van een site: http://www.computergaga.com/blog/pick-names-at-random-from-a-list-excel-vba/

Code:
Sub PickNamesAtRandom()

Dim HowMany As Integer
Dim NoOfNames As Long
Dim RandomNumber As Integer
Dim Names() As String 'Array to store randomly selected names
Dim i As Byte
Dim CellsOut As Long 'Variable to be used when entering names onto worksheet
Dim ArI As Byte 'Variable to increment through array indexes

Application.ScreenUpdating = False

HowMany = Range("D3").Value
CellsOut = 6

ReDim Names(1 To HowMany) 'Set the array size to how many names required
NoOfNames = Application.CountA(Range("A:A")) - 1 ' Find how many names in the list
i = 1

Do While i <= HowMany
RandomNo:
    RandomNumber = Application.RandBetween(2, NoOfNames + 1)
    'Check to see if the name has already been picked
    For ArI = LBound(Names) To UBound(Names)
        If Names(ArI) = Cells(RandomNumber, 1).Value Then
            GoTo RandomNo
        End If
    Next ArI
    Names(i) = Cells(RandomNumber, 1).Value ' Assign random name to the array
    i = i + 1
Loop

'Loop through the array and enter names onto the worksheet
For ArI = LBound(Names) To UBound(Names)

    Cells(CellsOut, 4) = Names(ArI)
    CellsOut = CellsOut + 1

Next ArI

Application.ScreenUpdating = True

End Sub

Bij het volgende deel van de code, wordt volgens mij bepaald waar de waarden komen te staan:
Code:
HowMany = Range("D3").Value
CellsOut = 6

Dus hier zou ik dan iets van een range moeten toewijzen?
 
Dit is de outputloop
Code:
For ArI = LBound(Names) To UBound(Names)

    Cells(CellsOut, 4) = Names(ArI)
    CellsOut = CellsOut + 1

Next ArI
Die code kan korter, maar goed dan is nog steeds niet duidelijk wat je zoekt. Maak dat helder met een voorbeeldbestand graag.
 
Dit is de outputloop
Code:
For ArI = LBound(Names) To UBound(Names)

    Cells(CellsOut, 4) = Names(ArI)
    CellsOut = CellsOut + 1

Next ArI
Die code kan korter, maar goed dan is nog steeds niet duidelijk wat je zoekt. Maak dat helder met een voorbeeldbestand graag.

Bedankt voor de uitleg. Hieronder een voorbeeld.

Ik wil de waarden in de oranje gekleurde cellen willekeurig verdelen over de lichtgele cellen. Alle waarden moeten worden gebruikt.
xnw6mb.png
 

Bijlagen

  • xnw6mb.png
    xnw6mb.png
    6,2 KB · Weergaven: 24
Dat is een plaatje, geen voorbeeldbestand. Plaats volgende keer een voorbeeldbestand graag.
Als het concreet over de nummers 1 tot en met 17 gaat die moeten worden verdeeld is er een iets eenvoudiger oplossing denkbaar dan de bijlage. Ik veronderstel even dat het in werkelijkheid om andere waarden gaat.
 

Bijlagen

  • Random_names.xlsm
    18,3 KB · Weergaven: 26
Dat is een plaatje, geen voorbeeldbestand. Plaats volgende keer een voorbeeldbestand graag.
Als het concreet over de nummers 1 tot en met 17 gaat die moeten worden verdeeld is er een iets eenvoudiger oplossing denkbaar dan de bijlage. Ik veronderstel even dat het in werkelijkheid om andere waarden gaat.
Hiernaar was ik op zoek. Bedankt!

Het hoeft niet zozeer 1 tot en met 17 zijn, maar ook meer of minder. Is het mogelijk om een andere range toe te wijzen bij een bepaald aantal gevulde cellen? Nu zijn het er 17 en is de range ("$G$12:$K$15,$G$16"), maar als het aantal waarden bijv. 18 is, dan moet de range zijn: ("$G$12:$K$15,$G$16,$H$16").
 
Laatst bewerkt:
Niet quoten a.j.b. Kies voor Snel Reageren of Ga Geavanceerd als je een bijlage wilt toevoegen.
Als je na onderstaande code nog meer wensen heb, geef je verhaal dan graag context. Ik heb liever een compleet beeld dan telkens die kleine stukjes informatie.
Code:
Sub tsh()
    Dim i As Long, Br, Cl
    Dim Rngi As Range, Rngo As Range
    
    Set Rngi = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
    Set Rngo = Range("$G$12").Resize(Int(Rngi.Count / 4) + 1, 4)
    Rngi.Offset(, 200).Name = "toeval"
    [toeval] = "=rand()"
    Br = [transpose(rank(toeval,toeval))]
    [toeval].ClearContents
    For Each Cl In Br
        i = i + 1
        Rngo(i) = Rngi(Cl)
    Next
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan