
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.