Excel vzorec: Náhodný seznam jmen -

Obecný vzorec

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

souhrn

Chcete-li vytvořit náhodný seznam jmen, můžete k výběru náhodných jmen z existujícího seznamu použít funkci INDEX a funkci RANDARRAY. V zobrazeném příkladu je vzorec v D5:

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

který vrací 10 náhodných hodnot z pojmenovaného rozsahu "names" (B5: B104).

Vysvětlení

Tento vzorec v jádru používá funkci INDEX k načtení 10 náhodných jmen z pojmenovaného rozsahu s názvem „names“, který obsahuje 100 jmen. Například k načtení pátého jména ze seznamu používáme INDEX takto:

=INDEX(names,5)

Trik však v tomto případě spočívá v tom, že nechceme jediné jméno na známém místě, chceme 10 náhodných jmen na neznámých místech mezi 1 a 100. Toto je vynikající případ použití funkce RANDARRAY, která může vytvořit náhodná sada celých čísel v daném rozsahu. Při práci zevnitř ven používáme RANDARRAY k získání 10 náhodných čísel mezi 1 a 100 takto:

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

Funkce COUNTA se používá k získání dynamického počtu jmen v seznamu, ale v tomto případě bychom mohli COUNTA nahradit napevno 100 se stejným výsledkem:

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

V obou případech vrátí RANDARRAY 10 čísel v poli, které vypadá takto:

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

Poznámka: tato čísla jsou pouze náhodná a nemapují se přímo na ukázaný příklad.

Toto pole se vrací přímo do funkce INDEX jako argument řádku:

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

Protože dáváme INDEX 10 čísel řádků, bude to 10 výsledků, každý odpovídající jménu na dané pozici. 10 náhodných jmen je vráceno v rozsahu úniku začínajícím v buňce D5.

Poznámka: RANDARRAY je nestálá funkce a přepočítá se při každé změně listu, což způsobí, že se hodnoty uchýlí. Chcete-li zabránit automatickému řazení hodnot, můžete zkopírovat vzorce a poté pomocí příkazu Vložit jinak> Hodnoty převést vzorce na statické hodnoty.

Zabraňte duplikátům

Jeden problém s výše uvedeným vzorcem (v závislosti na vašich potřebách) je ten, že RANDARRAY někdy vygeneruje duplicitní čísla. Jinými slovy, neexistuje žádná záruka, že RANDARRAY vrátí 10 jedinečných čísel.

Chcete-li zajistit 10 různých jmen ze seznamu, můžete upravit vzorec tak, aby náhodně seřadit celý seznam jmen, a poté načíst prvních 10 jmen ze seznamu. Vzorec v F5 používá tento přístup:

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

Přístup zde je stejný jako výše - používáme INDEX k načtení 10 hodnot ze seznamu jmen. V této verzi vzorce však náhodně třídíme seznam jmen, než předáme seznam INDEXu takto:

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

Zde se funkce SORTBY používá k náhodnému třídění seznamu jmen s hodnotami pole vytvořenými funkcí RANDARRAY, jak je podrobněji vysvětleno zde.

Nakonec musíme načíst 10 hodnot. Protože již máme jména v náhodném pořadí, můžeme jednoduše požádat o prvních 10 s polem vytvořeným funkcí SEQUENCE takto:

SEQUENCE(10)

SEQUENCE vytváří řadu sekvenčních čísel:

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

který je vrácen do funkce INDEX jako argument řádku. INDEX poté vrátí prvních 10 jmen v rozsahu rozlití jako původní vzorec.

Zajímavé články...