
Általános képlet
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Összegzés
Véletlenszerű névlista létrehozásához az INDEX és a RANDARRAY függvény segítségével véletlenszerű neveket választhat ki egy létező listából. A bemutatott példában a D5 képlete a következő:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
amely 10 véletlenszerű értéket ad vissza a megnevezett tartományból "nevek" (B5: B104).
Magyarázat
Lényegében ez a képlet az INDEX függvény segítségével 10 véletlenszerű név lekérdezésére szolgál egy 100 nevet tartalmazó, "nevek" nevű tartományból. Például az ötödik név lekérdezéséhez a következő indexet használjuk:
=INDEX(names,5)
Azonban a trükk ebben az esetben az, hogy nem egy nevet akarunk egy ismert helyre, hanem 10 véletlenszerű nevet akarunk ismeretlen helyekre 1 és 100 között. Ez kiváló felhasználási eset a RANDARRAY függvény számára, amely létrehozhat egy véletlenszerű egész számok egy adott tartományban. Belülről kifelé haladva a RANDARRAY segítségével 10 véletlenszerű számot kapunk 1 és 100 között:
RANDARRAY(10,1,1,COUNTA(names)
A COUNTA függvénnyel dinamikus névszámot kapunk a listában, de a COUNTA-t helyettesíthetjük kemény kódolású 100-zal ebben az esetben ugyanazzal az eredménnyel:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
Mindkét esetben a RANDARRAY 10 számot ad vissza egy tömbben, amely így néz ki:
(64;74;13;74;96;65;5;73;84;85)
Megjegyzés: ezek a számok csak véletlenszerűek, és nem közvetlenül a bemutatott példához kapcsolódnak.
Ezt a tömböt közvetlenül az INDEX függvény adja vissza sor argumentumként:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Mivel az INDEX-nek 10 sorszámot adunk, ez 10 eredményt fog eredményezni, amelyek mindegyike megfelel az adott pozíció nevének. A 10 véletlen nevet a D5 cellától kezdve egy kiömlési tartományban adjuk vissza.
Megjegyzés: A RANDARRAY egy ingatag függvény, amely minden alkalommal újraszámolja a munkalap megváltoztatását, ami értékeket igényel. Az értékek automatikus rendezésének leállításához másolja a képleteket, majd a Speciális beillesztés> Értékek használatával konvertálja a képleteket statikus értékekké.
Az ismétlések megakadályozása
A fenti képlet egyik problémája (az Ön igényeitől függően) az, hogy a RANDARRAY néha ismétlődő számokat generál. Más szóval, nincs garancia arra, hogy a RANDARRAY 10 egyedi számot ad vissza.
10 különböző név biztosításához a listából módosíthatja a képletet, hogy véletlenszerűen rendezze a teljes névlistát, majd lekérje az első 10 nevet a listáról. Az F5 képlete ezt a megközelítést használja:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
A megközelítés itt megegyezik a fentiekkel - az INDEX segítségével 10 értéket kapunk le a névsorból. A képlet ezen verziójában azonban véletlenszerűen válogatjuk a nevek listáját, mielőtt átadnánk a listát az INDEX-nek:
SORTBY(names,RANDARRAY(COUNTA(names)))
Itt a SORTBY függvény segítségével véletlenszerűen rendezhetjük a nevek listáját a RANDARRAY függvény által létrehozott tömbértékekkel, amint itt részletesebben kifejtjük.
Végül be kell szereznünk 10 értéket. Mivel már véletlenszerű sorrendben vannak neveink, egyszerűen kérhetjük az első 10-et a SEQUENCE függvény által létrehozott tömb segítségével:
SEQUENCE(10)
A SEQUENCE sorozatszámokat tömböt épít:
(1;2;3;4;5;6;7;8;9;10)
amelyet sorindokként visszaküldünk az INDEX függvénybe. Az INDEX ezután visszaadja az első 10 nevet egy kiömlési tartományban, mint az eredeti képlet.