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

Loten

Status
Niet open voor verdere reacties.

Onweerwolf

Gebruiker
Lid geworden
22 aug 2007
Berichten
14
Dag beste mensen,

Ik vroeg mij af of het mogelijk is om het volgende voor elkaar te krijgen:

In column A heb ik een reeks van 64 namen staan. In column B heb ik daarnaast een reeks van 64 letters staan. De namen en letters zijn gekoppeld (Naam in A1 hoort bij letter in B1) De namen zijn uniek, de letters echter niet. Er zijn in totaal 16 verschillende letters. Sommige komen 3x voor, sommige 4x en sommige 5x.

Wat ik wil is het volgende: ik wil de namen uit A1 t/m A8 onderverdelen in 8 verschillende 'pools'. Vervolgens komen de namen uit A9 t/m A16 daarbij zodat elke pool nu twee namen heeft. Dit gaat zo door totdat alle 8 pools gevuld zijn. Op zich is dit makkelijk te doen met de RAND() functie. Echter het probleem is: de namen die samen in een pool terechtkomen mogen niet dezelfde letter uit kolom B hebben.

Theoretisch is dit in ieder geval mogelijk, dat wil zeggen dat een letter niet zo vaak voorkomt dat het niet anders kan dan dat hij meerdere malen in een zelfde pool terechtkomt. (zoals gezegd komen de letters 3x, 4x of 5x voor).

Ik heb echter geen idee of en zo ja hoe dit te doen in Excel. Kan iemand mij daar bij helpen?

Bedankt!

NB: in het hieronder geposte voorbeeld bestaan de namen uit indexnummers.
 
Laatst bewerkt:
Een van gevoelige gegevens ontdaan voorbeeldbestandje zou enorm helpen.
 
Hier nog eens direct via het forum. Dat lukte me eerst niet aangezien ik de toevoegen knop niet kon vinden.
 

Bijlagen

Een eerste poging.
Er zullen ongetwijfeld betere/mooiere oplossingen te bedenken zijn.
Ik ruil die daar graag voor in.
 

Bijlagen

Hmz, jouw poging zorgt er inderdaad voor dat de pools niet meer uit deelnemers bestaan die een dezelfde letter hebben. Echter bestaan de pools nu uit deelnemers die uit dezelfde groep komen. Het is dus de bedoeling dat de namen uit a2-a9 worden verspreid over alle 8 pools. En vervolgens ook a10-a18, etc.

Maar wel bedankt natuurlijk!
 
Ter aanvulling: als ik het goed inschat moet het via mijn originele voorbeeld ook mogelijk zijn om een resultaat te behalen dat aan al mijn eisen voldoet. (Dus wanneer kolom J alleen maar 1'tjes bevat). Echter is het me na tientallen keren op F9 drukken nog niet gelukt om dat te bereiken.

Indien het niet mogelijk is om dit te vergemakkelijken via formules zou het dan wel mogelijk zijn om het via VBA te doen? Dus dat je een macro laat lopen die net zolang herberekend totdat het gewenste resultaat er is? Ik ga er vanuit dat dit zou moeten kunnen maar ik weet niet precies hoe ik dat moet schrijven. Ik ben geen programmeur maar snap op zich VBA wel als het me wordt voorgedaan. Is zoiets echter ook aan te raden? In theorie zou je namelijk een infinite loop kunnen creëren waarbij excel oneindig blijft herberekenen.
 
Laat deze makro lopen:

Code:
Sub test()
Application.ScreenUpdating = False
Do While [K65] < 64
Calculate
Loop
End Sub

Deze stopt automatisch als er 64 1'tjes staan in kolom J, wel moet je in K65 volgende formule zetten: =Aantal.als(J2:J65;1)
 
Geprobeerd, maar blijkbaar is de mogelijkheid tot een gewenst resultaat zo klein dat het heel erg lang kan duren voordat het zich voordoet. Na 10 minuten is Excel nog steeds bezig.
 
hallo Onweerwolf

om de kans te vergroten maak een macro die rekening houd met:
1 de verdeling van letters in de poelen (van 8 regels)
....... dus kijk naar de diversiteit van de letters in de poelen.
de pool met de laagste diversiteit daar kies je het eerste iemand uit
2 houdt ook rekening met hoevaak een letter in het geheel voorkomt.
....... dus hoe vaker een letter voor komt hoe eerder je de moet kiezen.
3 bij gelijke beoordeling dan pas een willekeur funktie gebruiken.

ik heb nu een opsetje gemaakt die met de punten 1 en 2 rekening houd.
punt 3 moet nog geïmplementeerd worden .

het is dus nog niet af

hier een voorproefje

groet sylvester
 

Bijlagen

sorry er zat een foutje in

hier een "goede" versie

ik verwijder de oude versie

groet sylvester

ps als je het een aantal keer probeert zie je dat soms meerdere pogingen nodig zijn
 

Bijlagen

Laatst bewerkt:
nu het zelfde maar zonder dat flikkerende beeld en de informatie in de knop

dat test makkelijker

graag hints voor verbeteringen

groet sylvester
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan