Excel-formule: willekeurige lijst met namen -

Inhoudsopgave

Generieke formule

=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))

Samenvatting

Om een ​​willekeurige lijst met namen te maken, kunt u de INDEX-functie en de RANDARRAY-functie gebruiken om willekeurige namen uit een bestaande lijst te selecteren. In het getoonde voorbeeld is de formule in D5:

=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))

die 10 willekeurige waarden retourneert uit het benoemde bereik "namen" (B5: B104).

Uitleg

In de kern gebruikt deze formule de functie INDEX om 10 willekeurige namen op te halen uit een benoemd bereik genaamd "namen" dat 100 namen bevat. Om bijvoorbeeld de vijfde naam uit de lijst op te halen, gebruiken we INDEX als volgt:

=INDEX(names,5)

De truc in dit geval is echter dat we geen enkele naam op een bekende locatie willen, we willen 10 willekeurige namen op onbekende locaties tussen 1 en 100. Dit is een uitstekende use-case voor de RANDARRAY-functie, die een willekeurige reeks gehele getallen in een bepaald bereik. We werken van binnen naar buiten en gebruiken RANDARRAY om 10 willekeurige getallen tussen 1 en 100 als volgt te krijgen:

RANDARRAY(10,1,1,COUNTA(names)

De COUNTA-functie wordt gebruikt om een ​​dynamisch aantal namen in de lijst te krijgen, maar we zouden in dit geval COUNTA kunnen vervangen door een hardgecodeerde 100 met hetzelfde resultaat:

=INDEX(names,RANDARRAY(10,1,1,100,TRUE))

In beide gevallen retourneert RANDARRAY 10 getallen in een array die er als volgt uitziet:

(64;74;13;74;96;65;5;73;84;85)

Opmerking: deze nummers zijn alleen willekeurig en komen niet rechtstreeks overeen met het getoonde voorbeeld.

Deze array wordt direct teruggestuurd naar de INDEX-functie als het rij-argument:

=INDEX(names, (64;74;13;74;96;65;5;73;84;85)

Omdat we INDEX 10 rijnummers geven, levert dit 10 resultaten op, die elk overeenkomen met een naam op de gegeven positie. De 10 willekeurige namen worden geretourneerd in een overloopbereik dat begint in cel D5.

Opmerking: RANDARRAY is een vluchtige functie en zal elke keer dat het werkblad wordt gewijzigd opnieuw worden berekend, waardoor waarden opnieuw worden gebruikt. Om te voorkomen dat waarden automatisch worden gesorteerd, kunt u de formules kopiëren en vervolgens Plakken speciaal> Waarden gebruiken om formules naar statische waarden te converteren.

Voorkom duplicaten

Een probleem met de bovenstaande formule (afhankelijk van uw behoeften) is dat RANDARRAY soms dubbele nummers genereert. Met andere woorden, er is geen garantie dat RANDARRAY 10 unieke nummers retourneert.

Om 10 verschillende namen uit de lijst te garanderen, kunt u de formule aanpassen om de volledige lijst met namen willekeurig te sorteren en vervolgens de eerste 10 namen uit de lijst op te halen. De formule in F5 gebruikt deze benadering:

=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))

De aanpak hier is hetzelfde als hierboven - we gebruiken INDEX om 10 waarden uit de lijst met namen op te halen. In deze versie van de formule sorteren we de lijst met namen echter willekeurig voordat we de lijst als volgt aan INDEX geven:

SORTBY(names,RANDARRAY(COUNTA(names)))

Hier wordt de functie SORTBY gebruikt om de lijst met namen willekeurig te sorteren met matrixwaarden die zijn gemaakt door de functie RANDARRAY, zoals hier in meer detail wordt uitgelegd.

Ten slotte moeten we 10 waarden ophalen. Omdat we al namen in een willekeurige volgorde hebben, kunnen we eenvoudig de eerste 10 opvragen met een array gemaakt door de SEQUENCE-functie als volgt:

SEQUENCE(10)

SEQUENCE bouwt een reeks opeenvolgende nummers op:

(1;2;3;4;5;6;7;8;9;10)

die wordt geretourneerd naar de INDEX-functie als het rijargument. INDEX retourneert vervolgens de eerste 10 namen in een overloopbereik zoals de oorspronkelijke formule.

Interessante artikelen...