„Excel“ formulė: Atsitiktinis vardų sąrašas -

Turinys

Bendroji formulė

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

Santrauka

Norėdami sukurti atsitiktinį vardų sąrašą, galite naudoti funkciją INDEX ir funkciją RANDARRAY, kad pasirinktumėte atsitiktinius pavadinimus iš esamo sąrašo. Parodytame pavyzdyje formulė D5 yra:

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

kuris grąžina 10 atsitiktinių reikšmių iš pavadinto diapazono „vardai“ (B5: B104).

Paaiškinimas

Iš esmės ši formulė naudoja funkciją INDEX, kad gautų 10 atsitiktinių pavadinimų iš pavadinto diapazono, pavadinto „vardai“, kuriame yra 100 pavadinimų. Pavyzdžiui, norėdami gauti penktą vardą iš sąrašo, mes naudojame INDEX taip:

=INDEX(names,5)

Tačiau apgaulė šiuo atveju yra ta, kad mes nenorime vieno vardo žinomoje vietoje, mes norime 10 atsitiktinių pavadinimų nežinomose vietose nuo 1 iki 100. Tai puikus RANDARRAY funkcijos naudojimo atvejis, kuris gali sukurti atsitiktinis sveikų skaičių rinkinys tam tikrame diapazone. Dirbdami iš vidaus, mes naudojame RANDARRAY, kad gautume 10 atsitiktinių skaičių nuo 1 iki 100:

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

Funkcija COUNTA naudojama norint gauti dinamišką vardų skaičių sąraše, tačiau šiuo atveju galėtume pakeisti COUNTA kietu kodu 100 tokiu pačiu rezultatu:

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

Bet kuriuo atveju RANDARRAY grąžins 10 skaičių iš masyvo, kuris atrodo taip:

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

Pastaba: šie skaičiai yra tik atsitiktiniai ir nėra tiesiogiai susieti su rodomu pavyzdžiu.

Šis masyvas grąžinamas tiesiai į INDEX funkciją kaip eilutės argumentą:

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

Kadangi INDEX suteikiame 10 eilučių skaičių, tai gaus 10 rezultatų, kurių kiekvienas atitinka pavadinimą nurodytoje pozicijoje. 10 atsitiktinių pavadinimų grąžinami iš D5 langelio.

Pastaba: RANDARRAY yra nepastovi funkcija, kuri bus perskaičiuojama kiekvieną kartą pakeitus darbalapį, todėl bus naudojamos vertės. Norėdami sustabdyti reikšmių automatinį rūšiavimą, galite nukopijuoti formules, tada naudodami „Įklijuoti specialius“> „Vertybės“, kad formules paverstumėte statinėmis reikšmėmis.

Užkirsti kelią dublikatams

Viena iš minėtos formulės problemų (atsižvelgiant į jūsų poreikius) yra ta, kad RANDARRAY kartais sugeneruos pasikartojančius skaičius. Kitaip tariant, nėra jokios garantijos, kad RANDARRAY grąžins 10 unikalių skaičių.

Norėdami įsitikinti, kad sąraše yra 10 skirtingų pavadinimų, galite pritaikyti formulę, kad atsitiktinai surūšiuotumėte visą vardų sąrašą, tada iš sąrašo nuskaitykite pirmuosius 10 vardų. F5 formulėje naudojamas šis metodas:

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

Čia požiūris yra toks pats kaip aukščiau - mes naudojame INDEX, kad gautume 10 reikšmių iš vardų sąrašo. Tačiau šioje formulės versijoje mes atsitiktinai rūšiuojame vardų sąrašą, prieš pateikdami sąrašą INDEX taip:

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

Čia funkcija SORTBY naudojama vardų sąrašui atsitiktinai rūšiuoti naudojant masyvo reikšmes, sukurtas funkcijos RANDARRAY, kaip čia išsamiau paaiškinta.

Galiausiai turime gauti 10 reikšmių. Kadangi vardus jau turime atsitiktine tvarka, mes galime tiesiog paprašyti pirmųjų 10 su masyvu, kurį sukūrė funkcija SEQUENCE:

SEQUENCE(10)

SEQUENCE sukuria eilės skaičių masyvą:

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

kuris grąžinamas į INDEX funkciją kaip eilutės argumentą. Tada INDEX grąžina pirmuosius 10 pavadinimų išpylimo diapazone, kaip ir pradinė formulė.

Įdomios straipsniai...