
Generisk formel
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Resumé
For at oprette en tilfældig liste med navne kan du bruge INDEX-funktionen og RANDARRAY-funktionen til at vælge tilfældige navne fra en eksisterende liste. I det viste eksempel er formlen i D5:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
der returnerer 10 tilfældige værdier fra det navngivne interval "navne" (B5: B104).
Forklaring
I kernen bruger denne formel INDEX-funktionen til at hente 10 tilfældige navne fra et navngivet område kaldet "navne", som indeholder 100 navne. For eksempel for at hente det femte navn fra listen bruger vi INDEX sådan:
=INDEX(names,5)
Tricket i dette tilfælde er dog, at vi ikke vil have et enkelt navn på et kendt sted, vi vil have 10 tilfældige navne på ukendte placeringer mellem 1 og 100. Dette er en fremragende brugstilfælde for RANDARRAY-funktionen, som kan skabe en tilfældigt sæt heltal i et givet interval. Når vi arbejder indefra og ud, bruger vi RANDARRAY til at få 10 tilfældige tal mellem 1 og 100 sådan:
RANDARRAY(10,1,1,COUNTA(names)
COUNTA-funktionen bruges til at få et dynamisk antal navne på listen, men vi kunne erstatte COUNTA med en hardkodet 100 i dette tilfælde med det samme resultat:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
I begge tilfælde returnerer RANDARRAY 10 numre i en matrix, der ser sådan ud:
(64;74;13;74;96;65;5;73;84;85)
Bemærk: disse tal er kun tilfældige og kortlægges ikke direkte til det viste eksempel.
Denne matrix returneres direkte til INDEX-funktionen som rækkeargumentet:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Da vi giver INDEX 10 række numre, vil det give 10 resultater, der hver svarer til et navn på den givne position. De 10 tilfældige navne returneres i et spildområde, der begynder i celle D5.
Bemærk: RANDARRAY er en flygtig funktion og genberegner hver gang regnearket ændres, hvilket får værdier til at blive brugt. For at forhindre, at værdier sorteres automatisk, kan du kopiere formlerne og derefter bruge Indsæt speciel> Værdier til at konvertere formler til statiske værdier.
Undgå dubletter
Et problem med ovenstående formel (afhængigt af dine behov) er, at RANDARRAY undertiden genererer duplikatnumre. Med andre ord er der ingen garanti for, at RANDARRAY returnerer 10 unikke numre.
For at sikre 10 forskellige navne fra listen kan du tilpasse formlen til at tilfældigt sortere hele listen over navne og derefter hente de første 10 navne fra listen. Formlen i F5 bruger denne tilgang:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
Tilgangen her er den samme som ovenfor - vi bruger INDEX til at hente 10 værdier fra listen over navne. I denne version af formlen sorterer vi imidlertid listen over navne tilfældigt, inden vi afleverer listen til INDEX sådan:
SORTBY(names,RANDARRAY(COUNTA(names)))
Her bruges SORTBY-funktionen til at sortere listen over navne tilfældigt med en matrixværdier oprettet af RANDARRAY-funktionen, som forklaret mere detaljeret her.
Endelig er vi nødt til at hente 10 værdier. Da vi allerede har navne i tilfældig rækkefølge, kan vi simpelthen anmode om de første 10 med en matrix oprettet af SEQUENCE-funktionen som denne:
SEQUENCE(10)
SEKVENS opbygger en række sekventielle numre:
(1;2;3;4;5;6;7;8;9;10)
som returneres til INDEX-funktionen som rækkeargumentet. INDEX returnerer derefter de første 10 navne i et spildområde som den originale formel.