Excel formula: Nasumični popis imena -

Generička formula

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

Sažetak

Da biste stvorili slučajni popis imena, možete koristiti funkciju INDEX i RANDARRAY za odabir slučajnih imena s postojećeg popisa. U prikazanom primjeru formula u D5 je:

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

koja vraća 10 slučajnih vrijednosti iz imenovanog raspona "imena" (B5: B104).

Obrazloženje

U osnovi, ova formula koristi funkciju INDEX za dohvaćanje 10 nasumičnih imena iz imenovanog raspona nazvanog "imena" koji sadrži 100 imena. Na primjer, za dohvaćanje petog imena s popisa koristimo INDEX ovako:

=INDEX(names,5)

No, trik je u ovom slučaju da ne želimo niti jedno ime na poznatom mjestu, već 10 nasumičnih imena na nepoznatim mjestima između 1 i 100. Ovo je izvrstan slučaj upotrebe funkcije RANDARRAY koja može stvoriti slučajni skup cijelih brojeva u danom rasponu. Radeći iznutra prema van, koristimo RANDARRAY da bismo dobili 10 slučajnih brojeva između 1 i 100 poput ovog:

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

Funkcija COUNTA koristi se za dobivanje dinamičkog broja imena na popisu, no COUNTA bismo u ovom slučaju mogli zamijeniti tvrdo kodiranim 100 s istim rezultatom:

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

U oba slučaja, RANDARRAY će vratiti 10 brojeva u polju koje izgleda ovako:

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

Napomena: ovi su brojevi samo slučajni i ne prenose se izravno na prikazani primjer.

Ovaj se niz vraća izravno u funkciju INDEX kao argument retka:

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

Budući da dajemo INDEKS 10 brojeva redaka, rezultirat će 10 rezultatima, svaki koji odgovara imenu na danom mjestu. 10 slučajnih imena vraća se u rasponu izlijevanja koji počinje u ćeliji D5.

Napomena: RANDARRAY je hlapljiva funkcija i preračunavat će se svaki put kad se radni list promijeni, što dovodi do pribjegavanja vrijednostima. Da biste zaustavili automatsko sortiranje vrijednosti, možete kopirati formule, a zatim upotrijebiti Posebno lijepljenje> Vrijednosti za pretvaranje formula u statičke vrijednosti.

Spriječite duplikate

Jedan od problema s gornjom formulom (ovisno o vašim potrebama) je taj što će RANDARRAY ponekad generirati dvostruke brojeve. Drugim riječima, ne postoji jamstvo da će RANDARRAY vratiti 10 jedinstvenih brojeva.

Da biste osigurali 10 različitih imena s popisa, možete prilagoditi formulu tako da nasumce sortira puni popis imena, a zatim dohvatiti prvih 10 imena s popisa. Formula u F5 koristi ovaj pristup:

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

Ovdje je pristup isti kao i gore - koristimo INDEX za dohvaćanje 10 vrijednosti s popisa imena. Međutim, u ovoj verziji formule nasumično sortiramo popis imena prije nego što popis damo INDEX-u ovako:

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

Ovdje se funkcija SORTBY koristi za slučajno sortiranje popisa imena s vrijednostima polja stvorenim pomoću funkcije RANDARRAY, kako je ovdje detaljnije objašnjeno.

Napokon, moramo dohvatiti 10 vrijednosti. Budući da imena već imamo slučajnim redoslijedom, možemo jednostavno zatražiti prvih 10 s nizom stvorenim pomoću funkcije SEQUENCE poput ove:

SEQUENCE(10)

SEQUENCE gradi niz sekvencijalnih brojeva:

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

koji se vraća funkciji INDEX kao argument retka. INDEX zatim vraća prvih 10 imena u rasponu izlijevanja poput izvorne formule.

Zanimljivi članci...