Innehållsförteckning
I handledningen visas hur man genererar slumpmässiga tal, slumpmässigt sorterar en lista, får ett slumpmässigt urval och slumpmässigt tilldelar data till grupper, allt med hjälp av en ny dynamisk array-funktion - RANDARRAY.
Som du förmodligen vet har Microsoft Excel redan ett par slumpmässiga funktioner - RAND och RANDBETWEEN. Varför ska vi införa ytterligare en? För att den är mycket kraftfullare och kan ersätta de båda äldre funktionerna. Förutom att du kan ställa in dina egna maximi- och minimivärden kan du ange hur många rader och kolumner som ska fyllas och om du vill producera slumpmässiga decimaler ellerTillsammans med andra funktioner kan RANDARRAY till och med blanda data och välja ett slumpmässigt urval.
Excel RANDARRAY-funktionen
Funktionen RANDARRAY i Excel returnerar en matris med slumpmässiga tal mellan två valfria tal som du anger.
Det är en av sex nya funktioner för dynamiska matriser som introduceras i Microsoft Excel 365. Resultatet är en dynamisk matris som automatiskt sprider sig till det angivna antalet rader och kolumner.
Funktionen har följande syntax. Observera att alla argument är valfria:
RANDARRAY([rows], [columns], [min], [max], [whole_number])Var:
Rader (valfritt) - anger hur många rader som ska fyllas i. Om det utelämnas är standardvärdet 1 rad.
Kolumner (valfritt) - anger hur många kolumner som ska fyllas i. Om det inte anges är standardvärdet 1 kolumn.
Min (valfritt) - det minsta slumpmässiga talet som ska produceras. Om det inte anges används standardvärdet 0.
Max (valfritt) - det största slumpmässiga talet som ska skapas. Om det inte anges används standardvärdet 1.
Hela_tal (valfritt) - bestämmer vilken typ av värden som ska returneras:
- SANN - hela tal
- FALSE eller utelämnas (standard) - decimaltal
RANDARRAY-funktionen - saker att komma ihåg
För att effektivt generera slumpmässiga nummer i dina Excel-arbetsblad finns det 6 viktiga punkter att ta hänsyn till:
- Funktionen RANDARRAY är endast tillgänglig i Excel för Microsoft 365 och Excel 2021. I Excel 2019, Excel 2016 och tidigare versioner är funktionen RANDARRAY inte tillgänglig.
- Om matrisen som returneras av RANDARRAY är slutresultatet (som skrivs ut i en cell och inte skickas till en annan funktion) skapar Excel automatiskt ett dynamiskt spillområde och fyller det med slumpmässiga tal. Se till att du har tillräckligt många tomma celler nedanför och/eller till höger om cellen där du skriver in formeln, annars uppstår ett #SPILL-fel.
- Om inget av argumenten anges returnerar en RANDARRAY()-formel ett enkelt decimaltal mellan 0 och 1.
- Om den rader eller/och kolumner argumenten representeras av decimaltal, kommer de att trunkeras till hela heltal före decimalpunkten (t.ex. 5,9 kommer att behandlas som 5).
- Om den min eller . max argumentet inte är definierat, är RANDARRAY standardmässigt 0 respektive 1.
- Liksom andra slumpfunktioner är Excel RANDARRAY flyktiga vilket innebär att den genererar en ny lista med slumpmässiga värden varje gång kalkylbladet beräknas. För att förhindra att detta händer kan du ersätta formler med värden genom att använda Excel's Klistra in speciellt > Värden funktion.
Grundläggande formel för Excel RANDARRAY
Låt mig nu visa dig en slumpmässig Excel-formel i sin enklaste form.
Anta att du vill fylla ett intervall som består av 5 rader och 3 kolumner med slumpmässiga tal. För att göra det, ställ in de två första argumenten på följande sätt:
- Rader är 5 eftersom vi vill ha resultaten i 5 rader.
- Kolumner är 3 eftersom vi vill ha resultaten i tre kolumner.
Alla andra argument har sina standardvärden och vi får följande formel:
=RANDARRAY(5, 3)
Skriv in det i den övre vänstra cellen i målområdet (A2 i vårt fall), tryck på Enter-tangenten och du får resultatet fördelat på det angivna antalet rader och kolumner.
Som du kan se i skärmdumpen ovan fyller denna grundläggande RANDARRAY-formel intervallet med slumpmässiga decimaltal från 0 till 1. Om du hellre vill få hela tal inom ett visst intervall kan du konfigurera de tre sista argumenten som visas i ytterligare exempel.
Hur man randomiserar i Excel - RANDARRAY-formelexempel
Nedan hittar du några avancerade formler som täcker typiska slumpmässiga scenarier i Excel.
Generera slumpmässiga tal mellan två tal
Om du vill skapa en lista med slumpmässiga tal inom ett visst intervall anger du det lägsta värdet i det tredje argumentet och det högsta värdet i det fjärde argumentet. Beroende på om du behöver heltal eller decimaltal ställer du in det femte argumentet på TRUE respektive FALSE.
Låt oss till exempel fylla ett intervall med 6 rader och 4 kolumner med slumpmässiga heltal från 1 till 100. För detta ställer vi in följande argument för funktionen RANDARRAY:
- Rader är 6 eftersom vi vill ha resultaten i 6 rader.
- Kolumner är 4 eftersom vi vill ha resultaten i fyra kolumner.
- Min är 1, vilket är det lägsta värde som vi vill ha.
- Max är 100, vilket är det högsta värdet som kan genereras.
- Hela_tal är TRUE eftersom vi behöver heltal.
Genom att lägga ihop argumenten får vi denna formel:
=RANDARRAY(6, 4, 1, 100, TRUE)
Det ger följande resultat:
Generera ett slumpmässigt datum mellan två datum
Om du letar efter en slumpmässig datumgenerator i Excel är funktionen RANDARRAY en enkel lösning! Allt du behöver göra är att ange det tidigare datumet (datum 1) och det senare datumet (datum 2) i fördefinierade celler och sedan hänvisa till dessa celler i din formel:
RANDARRAY(rader, kolumner, datum1 , datum2 , TRUE)I det här exemplet har vi skapat en lista med slumpmässiga datum mellan datumen i D1 och D2 med den här formeln:
=RANDARRAY(10, 1, D1, D2, TRUE)
Det finns naturligtvis inget som hindrar dig från att ange min- och maxdatum direkt i formeln om du vill det. Se bara till att du anger dem i ett format som Excel kan förstå:
=RANDARRAY(10, 1, "1/1/2020", "12/31/2020", TRUE)
För att undvika misstag kan du använda funktionen DATE för att skriva in datum:
=RANDARRAY(10, 1, DATE(2020,1,1), DATE(2020,12,31), TRUE)
Observera: Excel lagrar internt datum som serienummer, så formelns resultat kommer troligen att visas som siffror. För att visa resultaten korrekt tillämpar du Datum format till alla celler i spillområdet.
Generera slumpmässiga arbetsdagar i Excel
För att skapa slumpmässiga arbetsdagar bäddar du in funktionen RANDARRAY i det första argumentet för WORKDAY på följande sätt:
WORKDAY(RANDARRAY(rader, kolumner, datum1 , datum2 , TRUE), 1)RANDARRAY skapar en matris med slumpmässiga startdatum, till vilken funktionen WORKDAY lägger till 1 arbetsdag och ser till att alla datum som returneras är arbetsdagar.
Med datum 1 i D1 och datum 2 i D2, här är formeln för att skapa en lista med 10 veckodagar:
=ARBETSDAG(RANDARRAY(10, 1, D1, D2, TRUE), 1)
Precis som i det föregående exemplet ska du komma ihåg att formatera spillområdet som Datum för att resultaten ska visas korrekt.
Hur man genererar slumpmässiga nummer utan dubbletter
Även om det moderna Excel erbjuder 6 nya dynamiska array-funktioner finns det tyvärr fortfarande ingen inbyggd funktion för att returnera slumpmässiga tal utan dubbletter.
För att bygga din egen unik slumptalsgenerator i Excel måste du kedja ihop flera funktioner som visas nedan.
Slumpmässiga heltal :
INDEX(UNIK(RANDARRAY( n *2, 1, min , max , TRUE))), SEKVENS( n ))Slumpmässiga decimaler :
INDEX(UNIK(RANDARRAY( n *2, 1, min , max , FALSE)), SEKVENS( n ))Var:
- N är hur många värden du vill generera.
- Min är det lägsta värdet.
- Max är det högsta värdet.
Om du till exempel vill få fram 10 slumpmässiga hela tal utan dubbletter använder du den här formeln:
=INDEX(UNIK(RANDARRAY(20, 1, 1, 1, 100, TRUE)), SEKVENS(10))
Om du vill skapa en lista med 10 unika slumpmässiga decimaltal ändra TRUE till FALSE i det sista argumentet i RANDARRAY-funktionen eller helt enkelt utelämna detta argument:
=INDEX(UNIK(RANDARRAY(20, 1, 1, 1, 100, FALSE)), SEKVENS(10))
Tips och anteckningar:
- En detaljerad förklaring av formeln finns i Hur man genererar slumpmässiga tal i Excel utan dubbletter.
- I Excel 2019 och tidigare är funktionen RANDARRAY inte tillgänglig. I stället kan du kolla in den här lösningen.
Hur man slumpmässigt sorterar i Excel
Om du vill blanda data i Excel använder du RANDARRAY för arrayen "sortera efter" ( by_array Funktionen ROWS räknar antalet rader i datamängden och anger hur många slumpmässiga nummer som ska genereras:
SORTBY( uppgifter , RANDARRAY(ROWS( uppgifter )))Med detta tillvägagångssätt kan du slumpmässigt sortera en lista i Excel, oavsett om den innehåller siffror, datum eller text:
=SORTBY(A2:A13, RANDARRAY(ROWS(A2:A13)))
Du kan också blanda rader utan att blanda dina uppgifter:
=SORTBY(A2:B10, RANDARRAY(ROWS(A2:B10)))
Hur man får ett slumpmässigt urval i Excel
För att ta ut ett slumpmässigt urval från en lista kan du använda den här generiska formeln:
INDEX( uppgifter , RANDARRAY( n , 1, 1, ROWS( uppgifter ), TRUE)))Var n är antalet slumpmässiga poster som du vill ta ut.
Om du till exempel vill välja slumpmässigt 3 namn från listan i A2:A10 använder du den här formeln:
=INDEX(A2:A10, RANDARRAY(3, 1, 1, ROWS(A2:A10), TRUE))
Du kan också skriva in den önskade provstorleken i en cell, till exempel C2, och hänvisa till den cellen:
=INDEX(A2:A10, RANDARRAY(C2, 1, 1, ROWS(A2:A10), TRUE))
Hur denna formel fungerar:
Kärnan i formeln är funktionen RANDARRAY som skapar en slumpmässig matris av heltal, där värdet i C2 anger hur många värden som ska genereras. Det minsta antalet är hårdkodat (1) och det högsta antalet motsvarar antalet rader i datamängden, vilket returneras av funktionen ROWS.
Matrisen med slumpmässiga heltal går direkt till row_num argumentet för INDEX-funktionen, som anger positionerna för de objekt som ska returneras. För exemplet i skärmdumpen ovan är det:
=INDEX(A2:A10, {8;7;4})
Tips: När du väljer ett stort urval från en liten datamängd är det troligt att ditt slumpmässiga urval kommer att innehålla mer än en förekomst av samma post, eftersom det inte finns någon garanti för att RANDARRAY endast producerar unika nummer. För att förhindra detta använder du en version av formeln som är fri från dubbletter.
Hur man väljer slumpmässiga rader i Excel
Om ditt datamaterial innehåller mer än en kolumn, ange vilka kolumner som ska ingå i urvalet. Ange en arraykonstant för det sista argumentet ( kolumn_nummer ) i INDEX-funktionen, på följande sätt:
=INDEX(A2:B10, RANDARRAY(D2, 1, 1, ROWS(A2:A10), TRUE), {1,2})
Där A2:B10 är källdata och D2 är urvalsstorlek.
Resultatet blir att vårt slumpmässiga urval kommer att innehålla två kolumner med data:
Tips: Precis som i det föregående exemplet kan den här formeln ge dubbla poster. För att säkerställa att urvalet inte innehåller några upprepningar kan du använda ett något annorlunda tillvägagångssätt som beskrivs i Så här väljer du slumpmässiga rader utan dubbletter.
Hur man slumpmässigt tilldelar siffror och text i Excel
För att göra slumpmässiga tilldelningar i Excel använder du RANDBETWEEN tillsammans med CHOOSE-funktionen på detta sätt:
VÄLJ(RANDARRAY(ROWS( uppgifter ), 1, 1, n , TRUE), värde1 , värde2 ,...)Var:
- Uppgifter är ett intervall i källdata som du vill tilldela slumpmässiga värden.
- N är det totala antalet värden som ska tilldelas.
- Värde1 , värde2 , värde3 , etc. är de värden som ska tilldelas slumpmässigt.
Om du till exempel vill tilldela deltagarna i A2:A13 nummer från 1 till 3 använder du den här formeln:
=CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 3, TRUE), 1, 2, 3)
För att underlätta kan du ange de värden som ska tilldelas i separata celler, till exempel från D2 till D4, och hänvisa till dessa celler i formeln (individuellt, inte som ett intervall):
=CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 3, TRUE), D2, D3, D4)
Du kan alltså slumpmässigt tilldela siffror, bokstäver, text, datum och tider med samma formel:
Observera att funktionen RANDARRAY fortsätter att generera nya slumpmässiga värden vid varje ändring i arbetsbladet, vilket innebär att nya värden tilldelas varje gång. För att "fixa" de tilldelade värdena använder du funktionerna Klistra in special> Värden för att ersätta formlerna med deras beräknade värden.
Hur denna formel fungerar
Kärnan i den här lösningen är återigen funktionen RANDARRAY som producerar en matris med slumpmässiga heltal baserat på de min- och maxtal som du anger (från 1 till 3 i vårt fall). Funktionen ROWS talar om för RANDARRAY hur många slumpmässiga tal som ska genereras. Denna matris går till index_num argumentet i CHOOSE-funktionen. Till exempel:
=CHOOSE({1;2;1;2;2;3;2;3;3;3;1;3;1;2}, D2, D3, D4)
Index_nummer är argumentet som bestämmer positionerna för de värden som ska returneras. Och eftersom positionerna är slumpmässiga plockas värdena i D2:D4 i slumpmässig ordning. Japp, så enkelt är det :)
Hur man slumpmässigt tilldelar data till grupper
Om din uppgift är att slumpmässigt fördela deltagarna i grupper är formeln ovan kanske inte lämplig eftersom den inte kontrollerar hur många gånger en viss grupp väljs. Till exempel kan 5 personer fördelas till grupp A medan endast 2 personer fördelas till grupp C. För att göra en slumpmässig fördelning jämnt så att varje grupp har samma antal deltagare behöver du en annan lösning.
Först skapar du en lista med slumpmässiga nummer med hjälp av den här formeln:
=RANDARRAY(RADER(A2:A13))
Där A2:A13 är dina källdata.
Sedan tilldelar du grupper (eller något annat) med hjälp av denna generiska formel:
INDEX( värden_att_tilldela , ROUNDUP(RANG( first_random_number , random_numbers_range )/ n , 0))Var n är gruppstorleken, dvs. antalet gånger varje värde ska tilldelas.
För att slumpmässigt fördela personer till de grupper som anges i E2:E5, så att varje grupp har 3 deltagare, använd till exempel följande formel:
=INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))
Observera att det är en vanlig formel (inte en formel för dynamiska matriser!), så du måste låsa intervallerna med absoluta referenser som i formeln ovan.
Skriv in formeln i den översta cellen (C2 i vårt fall) och dra den sedan nedåt till så många celler som behövs. Resultatet kommer att se ut ungefär så här:
Kom ihåg att funktionen RANDARRAY är flyktig. För att förhindra att nya slumpmässiga värden genereras varje gång du ändrar något i arbetsbladet, ersätt formlerna med deras värden med hjälp av Klistra in speciellt funktion.
Hur denna formel fungerar:
RANDARRAY-formeln i hjälpkolumnen är mycket enkel och behöver knappast förklaras, så låt oss fokusera på formeln i kolumn C.
=INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))
Funktionen RANK rangordnar värdet i B2 i förhållande till matrisen med slumpmässiga tal i B2:B13. Resultatet är ett tal mellan 1 och det totala antalet deltagare (12 i vårt fall).
Rangordningen divideras med gruppstorleken (3 i vårt exempel) och funktionen ROUNDUP avrundar uppåt till närmaste heltal. Resultatet av denna operation är ett tal mellan 1 och det totala antalet grupper (4 i det här exemplet).
Siffran går till row_num argumentet för INDEX-funktionen och tvingar den att returnera ett värde från motsvarande rad i intervallet E2:E5, som representerar den tilldelade gruppen.
Excel RANDARRAY-funktionen fungerar inte
När din RANDARRAY-formel returnerar ett fel är detta de mest uppenbara orsakerna att kontrollera:
#SPILL fel
Precis som med alla andra dynamiska matrisfunktioner innebär ett #SPILL!-fel oftast att det inte finns tillräckligt med utrymme i det avsedda spillområdet för att visa alla resultat. Rensa alla celler i detta område så räknas formeln om automatiskt. Mer information finns i Excel #SPILL!-fel - orsaker och lösningar.
#VALUE fel
Ett fel #VALUE! kan uppstå under dessa omständigheter:
- Om en max är mindre än ett min värde.
- Om något av argumenten inte är numeriskt.
#NAME fel
I de flesta fall indikerar felet #NAME! något av följande:
- Funktionens namn är felstavat.
- Funktionen är inte tillgänglig i din Excel-version.
#CALC! fel
Ett #CALC! fel uppstår om rader eller . kolumner är mindre än 1 eller hänvisar till en tom cell.
Så här bygger du en slumpgenerator i Excel med den nya funktionen RANDARRAY. Tack för att du läste och hoppas att vi ses på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Exempel på RANDARRAY-formler (.xlsx-fil)