
Všeobecný vzorec
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Zhrnutie
Ak chcete vytvoriť náhodný zoznam mien, môžete na výber náhodných mien z existujúceho zoznamu použiť funkcie INDEX a RANDARRAY. V zobrazenom príklade je vzorec v D5:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
ktorá vráti 10 náhodných hodnôt z pomenovaného rozsahu „names“ (B5: B104).
Vysvetlenie
Tento vzorec v jadre využíva funkciu INDEX na získanie 10 náhodných mien z pomenovaného rozsahu s názvom „names“, ktorý obsahuje 100 mien. Napríklad na získanie piateho mena zo zoznamu používame INDEX takto:
=INDEX(names,5)
Trik však v tomto prípade spočíva v tom, že nechceme jediné meno na známom mieste, chceme 10 náhodných mien na neznámych miestach medzi 1 a 100. Toto je vynikajúci prípad použitia funkcie RANDARRAY, ktorá dokáže vytvoriť náhodná množina celých čísel v danom rozsahu. Pri práci zvnútra von používame RANDARRAY na získanie 10 náhodných čísel medzi 1 a 100 takto:
RANDARRAY(10,1,1,COUNTA(names)
Funkcia COUNTA sa používa na získanie dynamického počtu mien v zozname, ale COUNTA by sme mohli v tomto prípade nahradiť pevne zakódovaným číslom 100 s rovnakým výsledkom:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
V obidvoch prípadoch vráti RANDARRAY 10 čísel v poli, ktoré vyzerá takto:
(64;74;13;74;96;65;5;73;84;85)
Poznámka: tieto čísla sú iba náhodné a nemapujú sa priamo na uvedený príklad.
Toto pole sa vracia priamo do funkcie INDEX ako argument riadku:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Pretože dávame INDEXU 10 riadkových čísel, bude to mať 10 výsledkov, z ktorých každý bude zodpovedať názvu na danej pozícii. 10 náhodných mien sa vráti v rozsahu rozliatia, ktorý sa začína v bunke D5.
Poznámka: RANDARRAY je volatilná funkcia a prepočíta sa zakaždým, keď sa zmení pracovný hárok, čo spôsobí, že sa hodnoty použijú. Ak chcete zabrániť automatickému triedeniu hodnôt, môžete kopírovať vzorce a potom pomocou príkazov Prilepiť špeciálne> Hodnoty previesť vzorce na statické hodnoty.
Zabráňte duplikátom
Jedným z problémov vyššie uvedeného vzorca (v závislosti od vašich potrieb) je, že RANDARRAY niekedy vygeneruje duplicitné čísla. Inými slovami, neexistuje žiadna záruka, že RANDARRAY vráti 10 jedinečných čísel.
Ak chcete v zozname zabezpečiť 10 rôznych mien, môžete vzorec upraviť tak, že náhodne zoradíte celý zoznam mien, a potom zo zoznamu vyhľadáte prvých 10 mien. Vzorec v F5 používa tento prístup:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
Prístup je tu rovnaký ako vyššie - pomocou INDEXU načítame 10 hodnôt zo zoznamu mien. V tejto verzii vzorca však zoznam mien náhodne triedime, až potom zoznam odovzdáme INDEXU takto:
SORTBY(names,RANDARRAY(COUNTA(names)))
Tu sa funkcia SORTBY používa na náhodné triedenie zoznamu mien s hodnotami poľa vytvorenými funkciou RANDARRAY, ako je podrobnejšie vysvetlené tu.
Nakoniec musíme získať 10 hodnôt. Pretože už máme mená v náhodnom poradí, môžeme prvých 10 jednoducho požiadať o pole vytvorené funkciou SEQUENCE takto:
SEQUENCE(10)
SEQUENCE vytvára rad postupných čísel:
(1;2;3;4;5;6;7;8;9;10)
ktorý sa vráti do funkcie INDEX ako argument riadku. INDEX potom vráti prvých 10 mien v rozsahu rozliatia ako pôvodný vzorec.