Formula Excel: Lista aleatorie de nume -

Cuprins

Formula generică

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

rezumat

Pentru a crea o listă aleatorie de nume, puteți utiliza funcția INDEX și funcția RANDARRAY pentru a selecta nume aleatorii dintr-o listă existentă. În exemplul prezentat, formula din D5 este:

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

care returnează 10 valori aleatorii din intervalul numit „nume” (B5: B104).

Explicaţie

La bază, această formulă folosește funcția INDEX pentru a extrage 10 nume aleatorii dintr-un interval numit numit „nume” care conține 100 de nume. De exemplu, pentru a extrage al cincilea nume din listă, folosim INDEX astfel:

=INDEX(names,5)

Cu toate acestea, trucul în acest caz este că nu vrem un singur nume într-o locație cunoscută, vrem 10 nume aleatorii în locații necunoscute între 1 și 100. Acesta este un caz de utilizare excelent pentru funcția RANDARRAY, care poate crea un set aleatoriu de numere întregi într-un interval dat. Lucrând din interior spre exterior, folosim RANDARRAY pentru a obține 10 numere aleatorii între 1 și 100 astfel:

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

Funcția COUNTA este utilizată pentru a obține un număr dinamic de nume în listă, dar am putea înlocui COUNTA cu un cod codat 100 în acest caz cu același rezultat:

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

În ambele cazuri, RANDARRAY va returna 10 numere într-o matrice care arată astfel:

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

Notă: aceste numere sunt doar aleatorii și nu se mapează direct la exemplul prezentat.

Această matrice este returnată direct la funcția INDEX ca argument rând:

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

Deoarece oferim INDEX 10 numere de rând, va rezulta 10, fiecare corespunzând unui nume la poziția dată. Cele 10 nume aleatoare sunt returnate într-un interval de deversare care începe în celula D5.

Notă: RANDARRAY este o funcție volatilă și se va recalcula de fiecare dată când se schimbă foaia de lucru, determinând recurgerea la valori. Pentru a opri sortarea automată a valorilor, puteți copia formulele, apoi utilizați Lipire specială> Valori pentru a converti formulele în valori statice.

Preveniți duplicatele

O problemă cu formula de mai sus (în funcție de nevoile dvs.) este că RANDARRAY va genera uneori numere duplicate. Cu alte cuvinte, nu există nicio garanție că RANDARRAY va returna 10 numere unice.

Pentru a vă asigura 10 nume diferite din listă, puteți adapta formula pentru a sorta aleatoriu lista completă de nume, apoi pentru a prelua primele 10 nume din listă. Formula din F5 utilizează această abordare:

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

Abordarea de aici este aceeași ca mai sus - folosim INDEX pentru a extrage 10 valori din lista de nume. Cu toate acestea, în această versiune a formulei, sortăm aleatoriu lista de nume înainte de a da lista la INDEX astfel:

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

Aici, funcția SORTBY este utilizată pentru a sorta în mod aleatoriu lista de nume cu o valoare de matrice creată de funcția RANDARRAY, așa cum este explicat mai detaliat aici.

În cele din urmă, trebuie să recuperăm 10 valori. Deoarece avem deja nume într-o ordine aleatorie, putem solicita pur și simplu primele 10 cu o matrice creată de funcția SEQUENCE astfel:

SEQUENCE(10)

SEQUENCE construiește o serie de numere secvențiale:

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

care este returnat funcției INDEX ca argument rând. INDEX returnează apoi primele 10 nume într-un interval de deversare ca formula originală.

Articole interesante...