Excel formula: Naključni seznam imen -

Kazalo

Splošna formula

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

Povzetek

Če želite ustvariti naključni seznam imen, lahko s funkcijo INDEX in RANDARRAY izberete naključna imena iz obstoječega seznama. V prikazanem primeru je formula v D5:

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

ki vrne 10 naključnih vrednosti iz imenovanega obsega "imena" (B5: B104).

Pojasnilo

V osnovi ta formula uporablja funkcijo INDEX za pridobivanje 10 naključnih imen iz imenovanega obsega, imenovanega "imena", ki vsebuje 100 imen. Na primer, da s seznama pridobimo peto ime, uporabimo INDEX, kot je ta:

=INDEX(names,5)

Trik v tem primeru je, da ne želimo niti enega imena na znani lokaciji, temveč 10 naključnih imen na neznanih lokacijah med 1 in 100. To je odličen primer uporabe funkcije RANDARRAY, ki lahko ustvari naključni nabor celih števil v določenem obsegu. Če delamo od znotraj navzven, z RANDARRAY dobimo 10 naključnih števil med 1 in 100, kot je ta:

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

Funkcija COUNTA se uporablja za dinamično štetje imen na seznamu, vendar bi lahko COUNTA v tem primeru nadomestili s trdo kodirano 100 z enakim rezultatom:

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

V obeh primerih bo RANDARRAY vrnil 10 številk v matriko, ki je videti tako:

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

Opomba: te številke so samo naključne in se ne nanašajo neposredno na prikazani primer.

Ta matrika se vrne neposredno v funkcijo INDEX kot argument vrstice:

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

Ker podajamo INDEX 10 številk vrstic, bo 10 rezultatov, od katerih vsak ustreza imenu na danem položaju. 10 naključnih imen se vrne v območju razlitja, ki se začne v celici D5.

Opomba: RANDARRAY je volatilna funkcija in bo preračunana vsakič, ko se delovni list spremeni, zaradi česar se uporabijo vrednosti. Če želite ustaviti samodejno razvrščanje vrednosti, lahko kopirate formule in nato uporabite Posebna prilepitev> Vrednosti za pretvorbo formul v statične vrednosti.

Preprečite dvojnike

Ena težava z zgornjo formulo (odvisno od vaših potreb) je, da bo RANDARRAY včasih ustvaril podvojene številke. Z drugimi besedami, ni nobenega zagotovila, da bo RANDARRAY vrnil 10 unikatnih številk.

Če želite zagotoviti 10 različnih imen s seznama, lahko prilagodite formulo tako, da naključno razvrstite celoten seznam imen, nato pa s seznama pridobite prvih 10 imen. Formula v F5 uporablja ta pristop:

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

Pristop je enak kot zgoraj - z indeksom pridobimo 10 vrednosti s seznama imen. Vendar v tej različici formule seznam imen razvrščamo naključno, preden seznam damo INDEX, kot je ta:

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

Tu se funkcija SORTBY uporablja za naključno razvrščanje seznama imen z vrednostmi polja, ustvarjenimi s funkcijo RANDARRAY, kot je podrobneje razloženo tukaj.

Končno moramo pridobiti 10 vrednosti. Ker že imamo imena v naključnem vrstnem redu, lahko prvih 10 preprosto zahtevamo z matriko, ki jo ustvari funkcija SEQUENCE, kot je ta:

SEQUENCE(10)

SEQUENCE gradi niz zaporednih števil:

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

ki se vrne funkciji INDEX kot argument vrstice. Nato INDEX vrne prvih 10 imen v območju razlitja, kot je prvotna formula.

Zanimive Članki...