
Üldine valem
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Kokkuvõte
Juhusliku nimekirja loomiseks võite olemasolevast loendist juhuslike nimede valimiseks kasutada funktsiooni INDEX ja funktsiooni RANDARRAY. Näidatud näites on valem D5-s:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
mis tagastab 10 juhuslikku väärtust nimega vahemikust "nimed" (B5: B104).
Selgitus
Põhimõtteliselt kasutab see valem funktsiooni INDEX, et leida 10 juhuslikku nime nimega vahemikust, mida nimetatakse 100 nimeks. Näiteks loendist viienda nime hankimiseks kasutame INDEX-i järgmiselt:
=INDEX(names,5)
Kuid antud juhul on trikk selles, et me ei soovi ühte nime teadaolevas asukohas, me tahame 10 juhuslikku nime tundmatutes kohtades vahemikus 1 kuni 100. See on suurepärane RANDARRAY funktsiooni kasutamise juhtum, mis võib luua juhuslik täisarvude hulk antud vahemikus. Seestpoolt töötades kasutame RANDARRAY 10 juhusliku arvu saamiseks vahemikus 1 kuni 100:
RANDARRAY(10,1,1,COUNTA(names)
Funktsiooni COUNTA kasutatakse loendis dünaamilise nimede arvu saamiseks, kuid me võiksime COUNTA asendada kõvakoodiga 100 sel juhul sama tulemusega:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
Mõlemal juhul tagastab RANDARRAY massiivis 10 numbrit, mis näeb välja järgmine:
(64;74;13;74;96;65;5;73;84;85)
Märkus: need numbrid on ainult juhuslikud ja neid ei kaardistata otse näidisele.
See massiiv tagastatakse reafunktsioonina otse funktsioonile INDEX:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Kuna me anname INDEX-ile 10 rea numbrit, annab see 10 tulemust, millest igaüks vastab antud positsiooni nimele. 10 juhuslikku nime tagastatakse lahtrist D5 algavas vahemikus.
Märkus. RANDARRAY on kõikuv funktsioon ja arvutab ümber iga kord, kui töölehte muudetakse, põhjustades väärtuste kasutamist. Väärtuste automaatse sortimise peatamiseks võite valemid kopeerida ja seejärel valemite staatiliseks väärtuseks teisendamiseks kasutada Kleebi erilist> Väärtused.
Vältige duplikaate
Ühe ülaltoodud valemi probleem (olenevalt teie vajadustest) on see, et RANDARRAY genereerib mõnikord duplikaatnumbreid. Teisisõnu, pole mingit garantiid, et RANDARRAY tagastab 10 kordumatut numbrit.
10 erineva nime tagamiseks loendist saate kohandada valemit, et sortida juhuslikult täielik nimekiri, seejärel tuua loendist esimesed 10 nime. F5 valemis kasutatakse seda lähenemist:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
Siin on lähenemisviis sama, mis ülal - me kasutame INDEX-i, et tuua 10 väärtust nimede loendist. Kuid selles valemiversioonis sorteerime nimede loendi juhuslikult, enne kui loendi INDEXile annate:
SORTBY(names,RANDARRAY(COUNTA(names)))
Siin kasutatakse funktsiooni SORTBY, et sortida nimede loend juhuslikult funktsiooni RANDARRAY loodud massiivi väärtustega, nagu siin täpsemalt selgitatud.
Lõpuks peame leidma 10 väärtust. Kuna meil on juba juhuslikus järjekorras nimesid, võime esimesed 10 lihtsalt nõuda funktsiooni SEQUENCE loodud massiiviga:
SEQUENCE(10)
SEQUENCE loob järjestiknumbrite massiivi:
(1;2;3;4;5;6;7;8;9;10)
mis tagastatakse rea argumendina funktsioonile INDEX. Seejärel tagastab INDEX esimesed 10 nime vahemikus nagu algne valem.