Cuprins
Tutorialul arată cum să generați numere aleatorii, să sortați aleatoriu o listă, să obțineți o selecție aleatorie și să atribuiți aleatoriu date la grupuri. Toate acestea cu o nouă funcție de matrice dinamică - RANDARRAY.
După cum probabil știți, Microsoft Excel dispune deja de câteva funcții de randomizare - RAND și RANDBETWEEN. Ce rost are să introducem încă una? Pe scurt, pentru că este mult mai puternică și poate înlocui ambele funcții mai vechi. În afară de stabilirea propriilor valori maxime și minime, vă permite să specificați câte rânduri și coloane să umpleți și dacă să produceți zecimi aleatorii sauÎntregi. Utilizată împreună cu alte funcții, RANDARRAY poate chiar să amestece datele și să aleagă un eșantion aleatoriu.
Funcția Excel RANDARRAY
Funcția RANDARRAY din Excel returnează o matrice de numere aleatoare între două numere pe care le specificați.
Este una dintre cele șase noi funcții de matrice dinamică introduse în Microsoft Excel 365. Rezultatul este o matrice dinamică care se revarsă automat în numărul specificat de rânduri și coloane.
Funcția are următoarea sintaxă. Vă rugăm să observați că toate argumentele sunt opționale:
RANDARRAY([rows], [columns], [min], [max], [whole_number])Unde:
Rânduri (opțional) - definește numărul de rânduri de completat. Dacă se omite, valoarea implicită este de 1 rând.
Coloane (opțional) - definește numărul de coloane care trebuie umplute. Dacă se omite, valoarea implicită este 1 coloană.
Min (opțional) - cel mai mic număr aleatoriu care trebuie produs. Dacă nu este specificat, se utilizează valoarea implicită 0.
Max (opțional) - cel mai mare număr aleatoriu care trebuie creat. Dacă nu este specificat, se utilizează valoarea implicită 1.
Număr_întreg (opțional) - determină ce fel de valori trebuie returnate:
- ADEVĂRAT - numere întregi
- FALSE sau omis (implicit) - numere zecimale
Funcția RANDARRAY - lucruri de reținut
Pentru a genera în mod eficient numere aleatoare în foile de calcul Excel, există 6 puncte importante de care trebuie să țineți cont:
- Funcția RANDARRAY este disponibilă numai în Excel pentru Microsoft 365 și Excel 2021. În Excel 2019, Excel 2016 și versiunile anterioare, funcția RANDARRAY nu este disponibilă.
- În cazul în care matricea returnată de RANDARRAY este rezultatul final (ieșire într-o celulă și nu este transmisă unei alte funcții), Excel creează automat un interval dinamic de împrăștiere și îl populează cu numere aleatoare. Așadar, asigurați-vă că aveți suficiente celule goale în jos și/sau în dreapta celulei în care introduceți formula, altfel va apărea o eroare #SPILL.
- În cazul în care nu se specifică niciunul dintre argumente, o formulă RANDARRAY() returnează un singur număr zecimal între 0 și 1.
- În cazul în care rânduri sau/și coloane sunt reprezentate prin numere zecimale, acestea vor fi trunchiate la numărul întreg înainte de virgulă (de exemplu, 5,9 va fi tratat ca 5).
- În cazul în care min sau max nu este definit, RANDARRAY are valoarea implicită 0 și, respectiv, 1.
- Ca și alte funcții aleatoare, Excel RANDARRAY este volatile , ceea ce înseamnă că generează o nouă listă de valori aleatorii de fiecare dată când foaia de calcul este calculată. Pentru a preveni acest lucru, puteți înlocui formulele cu valori utilizând funcția Excel Lipire specială > Valori caracteristică.
Formula de bază Excel RANDARRAY de bază
Și acum, permiteți-mi să vă arăt o formulă Excel aleatorie în forma sa cea mai simplă.
Să presupunem că doriți să umpleți un interval format din 5 rânduri și 3 coloane cu numere aleatoare oarecare. Pentru a face acest lucru, configurați primele două argumente în acest fel:
- Rânduri este 5, deoarece dorim ca rezultatele să fie afișate în 5 rânduri.
- Coloane este 3, deoarece dorim ca rezultatele să fie afișate pe 3 coloane.
Toate celelalte argumente le lăsăm la valorile lor implicite și obținem următoarea formulă:
=RANDARRAY(5, 3)
Introduceți-o în celula din stânga sus a intervalului de destinație (A2 în cazul nostru), apăsați tasta Enter și veți avea rezultatele repartizate pe numărul specificat de rânduri și coloane.
După cum puteți vedea în captura de ecran de mai sus, această formulă de bază RANDARRAY umple intervalul cu numere zecimale aleatoare de la 0 la 1. Dacă preferați să obțineți numere întregi într-un anumit interval, configurați ultimele trei argumente, așa cum este demonstrat în exemplele următoare.
Cum să randomizezi în Excel - Exemple de formule RANDARRAY
Mai jos veți găsi câteva formule avansate care acoperă scenarii tipice de randomizare în Excel.
Generarea de numere aleatoare între două numere
Pentru a crea o listă de numere aleatoare într-un anumit interval, furnizați valoarea minimă în al treilea argument și numărul maxim în al patrulea argument. În funcție de faptul că aveți nevoie de numere întregi sau zecimale, setați al cincilea argument la TRUE sau FALSE, respectiv.
Ca exemplu, să populăm un interval de 6 rânduri și 4 coloane cu numere întregi aleatorii de la 1 la 100. Pentru aceasta, vom seta următoarele argumente ale funcției RANDARRAY:
- Rânduri este 6, deoarece dorim ca rezultatele să fie afișate în 6 rânduri.
- Coloane este 4, deoarece dorim ca rezultatele să fie afișate pe 4 coloane.
- Min este 1, care este valoarea minimă pe care dorim să o avem.
- Max este 100, care este valoarea maximă care poate fi generată.
- Număr_întreg este ADEVĂRAT deoarece avem nevoie de numere întregi.
Punând cap la cap argumentele, obținem următoarea formulă:
=RANDARRAY(6, 4, 1, 100, TRUE)
Și produce următorul rezultat:
Generați o dată aleatorie între două date
Căutați un generator de date aleatoare în Excel? Funcția RANDARRAY este o soluție simplă! Tot ce trebuie să faceți este să introduceți data anterioară (data 1) și data ulterioară (data 2) în celule predefinite, apoi să faceți referire la aceste celule în formula dvs:
RANDARRAY(rânduri, coloane, data1 , data2 , TRUE)Pentru acest exemplu, am creat o listă de date aleatorii între datele din D1 și D2 cu această formulă:
=RANDARRAY(10, 1, D1, D2, TRUE)
Desigur, nimic nu vă împiedică să furnizați datele min și max direct în formulă, dacă doriți. Asigurați-vă doar că le introduceți în formatul pe care Excel îl poate înțelege:
=RANDARRAY(10, 1, "1/1/2020", "12/31/2020", TRUE)
Pentru a evita greșelile, puteți utiliza funcția DATE pentru a introduce date:
=RANDARRAY(10, 1, DATE(2020,1,1), DATE(2020,12,31), TRUE)
Notă. În mod intern, Excel stochează datele ca numere de serie, astfel încât rezultatele formulei vor fi afișate, cel mai probabil, sub formă de numere. Pentru a afișa corect rezultatele, aplicați funcția Data la toate celulele din intervalul de deversare.
Generați zile de lucru aleatorii în Excel
Pentru a produce zile de lucru aleatorii, încorporați funcția RANDARRAY în primul argument al funcției WORKDAY astfel:
WORKDAY(RANDARRAY(rows, columns, data1 , data2 , TRUE), 1)RANDARRAY va crea o matrice de date de început aleatoare, la care funcția WORKDAY va adăuga 1 zi lucrătoare și se va asigura că toate datele returnate sunt zile lucrătoare.
Cu data 1 în D1 și data 2 în D2, iată formula pentru a produce o listă de 10 zile ale săptămânii:
=WORKDAY(RANDARRAY(10, 1, D1, D2, TRUE), 1)
La fel ca în exemplul anterior, nu uitați să formatați intervalul de vărsare sub forma Data pentru ca rezultatele să fie afișate corect.
Cum se generează numere aleatoare fără duplicate
Deși Excel-ul modern oferă 6 funcții noi de matrice dinamică, din păcate, nu există încă o funcție încorporată care să returneze numere aleatorii fără duplicate.
Pentru a vă construi propriul generator unic de numere aleatoare în Excel, va trebui să înlănțuiți mai multe funcții, așa cum se arată mai jos.
Numere întregi aleatorii :
INDEX(UNIQUE(RANDARRAY( n *2, 1, min , max , TRUE)), SECVENȚĂ( n ))Zecimale aleatorii :
INDEX(UNIQUE(RANDARRAY( n *2, 1, min , max , FALSE)), SECVENȚĂ( n ))Unde:
- N este numărul de valori pe care doriți să le generați.
- Min este cea mai mică valoare.
- Max este cea mai mare valoare.
De exemplu, pentru a produce 10 numere întregi aleatorii fără duplicate, utilizați această formulă:
=INDEX(UNIQUE(UNIQUE(RANDARRAY(20, 1, 1, 1, 100, TRUE)), SEQUENCE(10))
Pentru a crea o listă de 10 numere unice numere zecimale aleatoare , schimbați TRUE în FALSE în ultimul argument al funcției RANDARRAY sau pur și simplu omiteți acest argument:
=INDEX(UNIQUE(UNIQUE(RANDARRAY(20, 1, 1, 1, 100, FALSE)), SEQUENCE(10))
Sfaturi și note:
- Explicația detaliată a formulei poate fi găsită în Cum să generați numere aleatoare în Excel fără duplicate.
- În Excel 2019 și versiunile anterioare, funcția RANDARRAY nu este disponibilă. În schimb, vă rugăm să consultați această soluție.
Cum să sortați aleatoriu în Excel
Pentru a amesteca datele în Excel, utilizați RANDARRAY pentru matricea "sort by" ( by_array Funcția ROWS va număra numărul de rânduri din setul dvs. de date, indicând câte numere aleatoare trebuie generate:
SORTBY( date , RANDARRAY(ROWS( date )))Cu această abordare, puteți sortarea aleatorie a unei liste în Excel, indiferent dacă acesta conține numere, date sau intrări de text:
=SORTBY(A2:A13, RANDARRAY(ROWS(A2:A13)))
De asemenea, puteți, de asemenea, să amestecă rândurile fără a vă amesteca datele:
=SORTBY(A2:B10, RANDARRAY(ROWS(A2:B10)))
Cum să obțineți o selecție aleatorie în Excel
Pentru a extrage un eșantion aleatoriu dintr-o listă, iată o formulă generică de utilizat:
INDEX( date , RANDARRAY( n , 1, 1, 1, ROWS( date ), TRUE)))Unde n este numărul de intrări aleatorii pe care doriți să le extrageți.
De exemplu, pentru a selecta aleatoriu 3 nume din lista din A2:A10, utilizați această formulă:
=INDEX(A2:A10, RANDARRAY(3, 1, 1, 1, ROWS(A2:A10), TRUE))
Sau introduceți dimensiunea dorită a eșantionului într-o celulă, de exemplu C2, și faceți trimitere la acea celulă:
=INDEX(A2:A10, RANDARRAY(C2, 1, 1, 1, ROWS(A2:A10), TRUE))
Cum funcționează această formulă:
În centrul acestei formule se află funcția RANDARRAY, care creează o matrice aleatorie de numere întregi, valoarea din C2 definind câte valori trebuie generate. Numărul minim este codificat (1), iar numărul maxim corespunde numărului de rânduri din setul dvs. de date, care este returnat de funcția ROWS.
Matricea de numere întregi aleatorii merge direct la număr_ rând argument al funcției INDEX, specificând pozițiile elementelor care trebuie returnate. Pentru exemplul din imaginea de mai sus, acesta este:
=INDEX(A2:A10, {8;7;4})
Sfat: Atunci când alegeți un eșantion mare dintr-un set mic de date, există șanse ca selecția aleatorie să conțină mai multe apariții ale aceleiași intrări, deoarece nu există nicio garanție că RANDARRAY va produce numai numere unice. Pentru a preveni acest lucru, utilizați o versiune fără duplicate a acestei formule.
Cum să selectați rânduri aleatorii în Excel
Dacă setul de date conține mai mult de o coloană, specificați ce coloane să includeți în eșantion. Pentru aceasta, furnizați o constantă de matrice pentru ultimul argument ( număr_coloană ) a funcției INDEX, astfel:
=INDEX(A2:B10, RANDARRAY(D2, 1, 1, 1, ROWS(A2:A10), TRUE), {1,2})
Unde A2:B10 reprezintă datele sursă, iar D2 reprezintă dimensiunea eșantionului.
Ca rezultat, selecția noastră aleatorie va conține două coloane de date:
Sfat. Ca și în cazul exemplului anterior, această formulă poate returna înregistrări duplicate. Pentru a vă asigura că eșantionul dvs. nu are repetări, utilizați o abordare ușor diferită descrisă în Cum să selectați rânduri aleatorii fără dubluri.
Cum să atribuiți numere și text în mod aleatoriu în Excel
Pentru a face o repartizare aleatorie în Excel, utilizați RANDBETWEEN împreună cu funcția CHOOSE în acest mod:
ALEGE(RANDARRAY(ROWS( date ), 1, 1, n , TRUE), valoare1 , valoare2 ,...)Unde:
- Date este un interval din datele sursă căruia doriți să îi atribuiți valori aleatorii.
- N este numărul total de valori care trebuie atribuite.
- Valoare1 , valoare2 , valoare3 , etc. sunt valorile care urmează să fie atribuite aleatoriu.
De exemplu, pentru a atribui numere de la 1 la 3 participanților din A2:A13, utilizați această formulă:
=CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 1, 3, TRUE), 1, 2, 3)
Pentru comoditate, puteți introduce valorile de atribuit în celule separate, de exemplu de la D2 la D4, și puteți face referire la aceste celule în formula dumneavoastră (individual, nu ca interval):
=CHOOSE(RANDARRAY(ROWS(A2:A13), 1, 1, 1, 3, TRUE), D2, D3, D4)
Ca rezultat, veți putea să atribuiți aleatoriu orice numere, litere, text, date și ore cu aceeași formulă:
Notă. Funcția RANDARRAY va continua să genereze noi valori aleatorii la fiecare modificare în foaia de calcul, ca urmare, de fiecare dată vor fi atribuite noi valori. Pentru a "repara" valorile atribuite, utilizați funcțiile Paste Special> Values pentru a înlocui formulele cu valorile lor calculate.
Cum funcționează această formulă
În centrul acestei soluții se află din nou funcția RANDARRAY, care produce o matrice de numere întregi aleatoare pe baza numerelor minime și maxime pe care le specificați (de la 1 la 3 în cazul nostru). Funcția ROWS îi spune lui RANDARRAY câte numere aleatoare trebuie să genereze. Această matrice merge în index_num argument al funcției CHOOSE. De exemplu:
=CHOOSE({1;2;1;1;2;2;3;2;3;3;3;1;3;1;2}, D2, D3, D4)
Număr_indice este argumentul care determină pozițiile valorilor care trebuie returnate. Și pentru că pozițiile sunt aleatorii, valorile din D2:D4 sunt alese într-o ordine aleatorie. Da, este atât de simplu :)
Cum se repartizează aleatoriu datele pe grupuri
Atunci când sarcina dvs. este de a repartiza aleatoriu participanții pe grupuri, formula de mai sus ar putea să nu fie adecvată, deoarece nu controlează de câte ori este ales un anumit grup. De exemplu, 5 persoane ar putea fi repartizate în grupul A, în timp ce doar 2 persoane ar putea fi repartizate în grupul C. Pentru a face repartizarea aleatorie în mod egal , astfel încât fiecare grup să aibă același număr de participanți, aveți nevoie de o soluție diferită.
În primul rând, generați o listă de numere aleatoare folosind această formulă:
=RANDARRAY(ROWS(A2:A13))
Unde A2:A13 sunt datele sursă.
Apoi, atribuiți grupuri (sau orice altceva) folosind această formulă generică:
INDEX( valori_pentru_atribuire , ROUNDUP(RANG( first_random_number , random_numbers_range )/ n , 0))Unde n este dimensiunea grupului, adică numărul de ori de câte ori trebuie atribuită fiecare valoare.
De exemplu, pentru a repartiza aleatoriu persoane în grupurile enumerate în E2:E5, astfel încât fiecare grup să aibă 3 participanți, utilizați această formulă:
=INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))
Vă rugăm să rețineți că este o formulă obișnuită (nu o formulă de matrice dinamică!), astfel încât trebuie să blocați intervalele cu referințe absolute, ca în formula de mai sus.
Introduceți formula dvs. în celula de sus (C2 în cazul nostru) și apoi trageți-o în jos în câte celule sunt necesare. Rezultatul va arăta asemănător cu acesta:
Rețineți că funcția RANDARRAY este volatilă. Pentru a preveni generarea de noi valori aleatorii de fiecare dată când modificați ceva în foaia de calcul, înlocuiți formulele cu valorile lor utilizând funcția Lipire specială caracteristică.
Cum funcționează această formulă:
Formula RANDARRAY din coloana de ajutor este foarte simplă și nu necesită explicații, așa că să ne concentrăm asupra formulei din coloana C.
=INDEX($E$2:$E$5, ROUNDUP(RANK(B2,$B$2:$B$13)/3,0))
Funcția RANK clasifică valoarea din B2 în raport cu matricea de numere aleatoare din B2:B13. Rezultatul este un număr între 1 și numărul total de participanți (12 în cazul nostru).
Rangul este împărțit la mărimea grupului (3 în exemplul nostru), iar funcția ROUNDUP îl rotunjește la cel mai apropiat număr întreg. Rezultatul acestei operații este un număr cuprins între 1 și numărul total de grupuri (4 în acest exemplu).
Numărul întreg merge la număr_ rând al funcției INDEX, forțând-o să returneze o valoare din rândul corespunzător din intervalul E2:E5, care reprezintă grupul atribuit.
Funcția Excel RANDARRAY nu funcționează
Atunci când formula RANDARRAY returnează o eroare, acestea sunt cele mai evidente motive de verificare:
Eroare #SPILL
Ca și în cazul oricărei alte funcții de matrice dinamică, o eroare #SPILL! înseamnă cel mai adesea că nu există suficient spațiu în intervalul de vărsare prevăzut pentru a afișa toate rezultatele. Pur și simplu ștergeți toate celulele din acest interval, iar formula dvs. se va recalcula automat. Pentru mai multe informații, consultați Excel #SPILL error - cauze și remedieri.
Eroare #VALUE
În aceste condiții, poate apărea o eroare #VALUE!
- În cazul în care un max este mai mică decât o valoare min valoare.
- În cazul în care unul dintre argumente nu este numeric.
#NAME eroare
În majoritatea cazurilor, o eroare #NAME! indică una dintre următoarele:
- Numele funcției este scris greșit.
- Funcția nu este disponibilă în versiunea dumneavoastră de Excel.
Eroare #CALC!
O eroare #CALC! apare dacă rânduri sau coloane este mai mic decât 1 sau se referă la o celulă goală.
Iată cum se construiește un generator de numere aleatoare în Excel cu noua funcție RANDARRAY. Vă mulțumesc pentru lectură și sper să ne revedem pe blog săptămâna viitoare!
Caietul de practică pentru descărcare
Exemple de formule RANDARRAY (fișier .xlsx)