Excel-formel: Tilfeldig liste over navn -

Generisk formel

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

Sammendrag

For å lage en tilfeldig liste med navn, kan du bruke INDEX-funksjonen og RANDARRAY-funksjonen til å velge tilfeldige navn fra en eksisterende liste. I eksemplet vist er formelen i D5:

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

som returnerer 10 tilfeldige verdier fra det navngitte området "navn" (B5: B104).

Forklaring

I kjernen bruker denne formelen INDEX-funksjonen til å hente 10 tilfeldige navn fra et navngitt område kalt "navn" som inneholder 100 navn. For eksempel, for å hente det femte navnet fra listen, bruker vi INDEX slik:

=INDEX(names,5)

Trikset i dette tilfellet er imidlertid at vi ikke vil ha et enkelt navn på et kjent sted, vi vil ha 10 tilfeldige navn på ukjente steder mellom 1 og 100. Dette er et utmerket bruksfall for RANDARRAY-funksjonen, som kan skape en tilfeldig sett med heltall i et gitt område. Når vi jobber fra innsiden og ut, bruker vi RANDARRAY for å få 10 tilfeldige tall mellom 1 og 100 slik:

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

COUNTA-funksjonen brukes til å få et dynamisk antall navn i listen, men vi kan erstatte COUNTA med en hardkodet 100 i dette tilfellet med samme resultat:

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

I begge tilfeller vil RANDARRAY returnere 10 tall i en matrise som ser slik ut:

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

Merk: disse tallene er bare tilfeldige og tilordnes ikke direkte til eksemplet som vises.

Denne matrisen returneres direkte til INDEX-funksjonen som radargumentet:

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

Fordi vi gir INDEX 10 radnumre, vil det gi 10 resultater, som hver tilsvarer et navn på den gitte posisjonen. De 10 tilfeldige navnene returneres i et sølingsområde som begynner i celle D5.

Merk: RANDARRAY er en flyktig funksjon og beregnes på nytt hver gang regnearket endres, og forårsaker at verdiene blir brukt. For å hindre at verdiene sorteres automatisk, kan du kopiere formlene og deretter bruke Lim inn spesial> Verdier for å konvertere formler til statiske verdier.

Forhindre duplikater

Et problem med formelen ovenfor (avhengig av dine behov) er at RANDARRAY noen ganger vil generere duplikatnummer. Det er med andre ord ingen garanti for at RANDARRAY returnerer 10 unike tall.

For å sikre 10 forskjellige navn fra listen, kan du tilpasse formelen for å tilfeldig sortere hele listen over navn, og deretter hente de 10 første navnene fra listen. Formelen i F5 bruker denne tilnærmingen:

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

Tilnærmingen her er den samme som ovenfor - vi bruker INDEX for å hente 10 verdier fra listen over navn. Imidlertid sorterer vi listen over navn tilfeldig i denne versjonen av formelen før vi gir oss listen til INDEX slik:

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

Her brukes SORTBY-funksjonen til å sortere listen over navn tilfeldig med en matriseverdi opprettet av RANDARRAY-funksjonen, som forklart mer detaljert her.

Til slutt må vi hente 10 verdier. Fordi vi allerede har navn i tilfeldig rekkefølge, kan vi bare be om de første 10 med en matrise opprettet av SEQUENCE-funksjonen slik:

SEQUENCE(10)

SEQUENCE bygger en rekke sekvensielle tall:

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

som returneres til INDEX-funksjonen som radargument. INDEX returnerer deretter de ti første navnene i et spillområde som den opprinnelige formelen.

Interessante artikler...