
Generisk formel
=INDEX(names,RANDARRAY(n,1,1,COUNTA(names),TRUE))
Sammanfattning
För att skapa en slumpmässig namnlista kan du använda INDEX-funktionen och RANDARRAY-funktionen för att välja slumpmässiga namn från en befintlig lista. I exemplet som visas är formeln i D5:
=INDEX(names,RANDARRAY(10,1,1,COUNTA(names),TRUE))
som returnerar 10 slumpmässiga värden från det namngivna intervallet "namn" (B5: B104).
Förklaring
Kärnan använder denna formel INDEX-funktionen för att hämta 10 slumpmässiga namn från ett namngivet intervall som heter "namn" som innehåller 100 namn. För att till exempel hämta det femte namnet från listan använder vi INDEX så här:
=INDEX(names,5)
Tricket i detta fall är dock att vi inte vill ha ett enda namn på en känd plats, vi vill ha 10 slumpmässiga namn på okända platser mellan 1 och 100. Detta är ett utmärkt användningsfall för RANDARRAY-funktionen, som kan skapa en slumpmässig uppsättning heltal i ett givet intervall. När vi arbetar inifrån och ut använder vi RANDARRAY för att få 10 slumpmässiga nummer mellan 1 och 100 så här:
RANDARRAY(10,1,1,COUNTA(names)
COUNTA-funktionen används för att få ett dynamiskt antal namn i listan, men vi skulle kunna ersätta COUNTA med en hårdkodad 100 i det här fallet med samma resultat:
=INDEX(names,RANDARRAY(10,1,1,100,TRUE))
I båda fallen kommer RANDARRAY att returnera 10 nummer i en matris som ser ut så här:
(64;74;13;74;96;65;5;73;84;85)
Obs! Dessa siffror är endast slumpmässiga och kartläggs inte direkt till exemplet som visas.
Denna matris returneras direkt till INDEX-funktionen som radargumentet:
=INDEX(names, (64;74;13;74;96;65;5;73;84;85)
Eftersom vi ger INDEX 10 radnummer kommer det att ge 10 resultat, var och en motsvarar ett namn på den angivna positionen. De tio slumpmässiga namnen returneras i ett spillintervall som börjar i cell D5.
Obs! RANDARRAY är en flyktig funktion och kommer att räkna om varje gång kalkylbladet ändras, vilket gör att värdena används. För att förhindra att värden sorteras automatiskt kan du kopiera formlerna och sedan använda Klistra in Special> Värden för att konvertera formler till statiska värden.
Förhindra dubbletter
Ett problem med ovanstående formel (beroende på dina behov) är att RANDARRAY ibland genererar dubbla nummer. Med andra ord finns det ingen garanti för att RANDARRAY returnerar 10 unika nummer.
För att säkerställa 10 olika namn från listan kan du anpassa formeln för att slumpmässigt sortera hela listan med namn och sedan hämta de första 10 namnen från listan. Formeln i F5 använder denna metod:
=INDEX(SORTBY(names,RANDARRAY(COUNTA(names))),SEQUENCE(10))
Tillvägagångssättet här är detsamma som ovan - vi använder INDEX för att hämta 10 värden från listan med namn. I den här versionen av formeln sorterar vi dock listan med namn slumpmässigt innan vi lämnar listan till INDEX så här:
SORTBY(names,RANDARRAY(COUNTA(names)))
Här används SORTBY-funktionen för att sortera listan med namn slumpmässigt med en matrisvärden som skapats av RANDARRAY-funktionen, som förklaras mer detaljerat här.
Slutligen måste vi hämta 10 värden. Eftersom vi redan har namn i slumpmässig ordning kan vi helt enkelt begära de första 10 med en matris skapad av SEQUENCE-funktionen så här:
SEQUENCE(10)
SEQUENCE bygger en rad sekventiella nummer:
(1;2;3;4;5;6;7;8;9;10)
som returneras till INDEX-funktionen som radargument. INDEX returnerar sedan de första tio namnen i ett spillintervall som den ursprungliga formeln.