Dynamic Arrays în Excel: revoluția formulelor pe care 90% din utilizatori o ignoră
Înainte de Dynamic Arrays, o formulă Excel returna o singură valoare. O celulă, un rezultat.
Din 2020, Excel a schimbat fundamental această regulă. Acum o singură formulă poate returna sute de rezultate dinamic — fără Ctrl+Shift+Enter, fără formule matriciale complexe, fără VBA.
Dacă nu folosești Dynamic Arrays, lucrezi cu o versiune incompletă a Excel-ului modern.
Ce sunt Dynamic Arrays
O formulă Dynamic Array se scrie într-o singură celulă și „se varsă” automat în celulele vecine — atâtea câte rezultate returnează. Acest comportament se numește spill.
Exemplu simplu:
={"Luni";"Marți";"Miercuri";"Joi";"Vineri"}
Scrisă în A1, această formulă completează automat A1:A5. Nu trebuie să o copiezi în jos.
Simbolul # (spill range operator): Dacă formula ta e în A1 și vrei să te referi la toate rezultatele ei dintr-o altă formulă:
=SUMA(A1#) // sumă din tot spill range-ul
=CONTOR(A1#) // câte rezultate a returnat
Funcțiile Dynamic Array — fiecare cu un superpunct
FILTER — cel mai util dintre toate
=FILTER(array; include; [daca_gol])
Returnează toate rândurile care îndeplinesc o condiție. Fără tabele pivot, fără filtre manuale.
Exemplu: toți agenții cu vânzări peste 50.000 lei
=FILTER(A2:D100; D2:D100>50000; "Nicio înregistrare")
Condiții multiple (ȘI):
=FILTER(A2:D100; (B2:B100="Nord")*(D2:D100>50000))
Condiții multiple (SAU):
=FILTER(A2:D100; (B2:B100="Nord")+(B2:B100="Sud"))
Rezultatul se actualizează automat când se schimbă datele sursă.
SORT și SORTBY — ordonare dinamică
=SORT(array; [index_col]; [ordine]; [pe_col])
// Top vânzări, descrescător
=SORT(A2:D100; 4; -1)
// Ordonare după mai multe criterii
=SORTBY(A2:D100; D2:D100; -1; B2:B100; 1)
// Întâi descrescător după vânzări, la egal crescător după regiune
Combini cu FILTER pentru liste filtrate și ordonate simultan:
=SORT(FILTER(A2:D100; B2:B100="Nord"); 4; -1)
UNIQUE — elimini duplicatele în mod dinamic
=UNIQUE(array; [pe_col]; [exact_o_data])
Lista unică de agenți din tabel:
=UNIQUE(B2:B100)
Exact o dată = produsele care apar o singură dată (nu sunt repetate):
=UNIQUE(C2:C100; FALSE; TRUE)
Combini cu SORT pentru liste unice ordonate alfabetic:
=SORT(UNIQUE(B2:B100))
SEQUENCE — generezi serii de numere automat
=SEQUENCE(rânduri; [coloane]; [start]; [pas])
Calendar lunar automat (rânduri = zile din lună):
=SEQUENCE(31; 1; DATE(2026;5;1); 1)
Matrice 5×12 cu numere de la 1 la 60:
=SEQUENCE(5; 12; 1; 1)
Util pentru tabele de amortizare, calendare, serii de teste.
RANDARRAY — date de test generate instant
=RANDARRAY(rânduri; coloane; min; max; intreg)
// 100 de valori întregi între 1000 și 50000
=RANDARRAY(100; 1; 1000; 50000; TRUE)
Perfect pentru a genera date de test fără să introduci manual.
Combinații puternice: Dynamic Arrays în lanț
Top 10 produse după vânzări
=TAKE(SORT(FILTER(A2:D100; D2:D100>0); 4; -1); 10)
FILTER elimină produsele cu 0 vânzări → SORT ordonează descrescător → TAKE ia primele 10. O singură formulă, fără tabele pivot.
Dropdown dinamic cu valori unice ordonate
// În Data Validation → List → Source:
=SORT(UNIQUE(FILTER(B2:B100; B2:B100<>"")))
Lista dropdown se actualizează automat când adaugi regiuni noi.
Raport cruce dinamică fără Pivot Table
// Capete de coloană (luni unice):
=TRANSPOSE(SORT(UNIQUE(A2:A100)))
// Valori (SUMIFS dinamic):
=SUMIFS($D$2:$D$100; $B$2:$B$100; $G2; $A$2:$A$100; H$1)
Erori comune cu Dynamic Arrays
#SPILL! — nu e loc pentru rezultate Celulele în care ar trebui să se verse rezultatele sunt ocupate. Curăță celulele din calea formulei.
#CALC! — set de date gol FILTER nu a găsit niciun rezultat. Adaugă parametrul daca_gol:
=FILTER(A2:D100; D2:D100>0; "Nicio înregistrare")
Performanță pe seturi mari Pe 100.000+ rânduri, FILTER + SORT poate fi lent. Consideră Power Query pentru volume mari.
Dynamic Arrays vs metodele clasice
| Sarcină | Metoda clasică | Dynamic Arrays |
|---|---|---|
| Lista unică dintr-o coloană | Remove Duplicates + copiere manuală | =SORT(UNIQUE(...)) |
| Top 10 după valoare | Sort + copiere + formatare | =TAKE(SORT(...);10) |
| Filtrare cu mai multe criterii | Advanced Filter sau Pivot Table | =FILTER(...) |
| Numerotare automată | Tastare manuală sau ROW()-1 | =SEQUENCE(...) |
Compatibilitate
Dynamic Arrays sunt disponibile în:
- Microsoft 365 (toate planurile) — din 2020
- Excel 2021
- Excel Online
Excel 2019 și mai vechi nu suportă Dynamic Arrays. Formulele apar ca legacy array formulas (cu {}) și pot să nu funcționeze corect.
Concluzie
Dynamic Arrays transformă Excel dintr-un instrument de calcul celulă-cu-celulă într-un motor de analiză care gândește în seturi de date. O formulă înlocuiește zece pași manuali.
Dacă lucrezi cu liste, rapoarte filtrate sau analize repetitive, Dynamic Arrays îți reduc munca cu 70-80%.
La Excel Group integrăm Dynamic Arrays în sistemele de raportare ale firmelor din România și Moldova — rapoarte care se actualizează singure, fără intervenție manuală. Contactează-ne.
Întrebări frecvente
Pot folosi Dynamic Arrays cu tabele Excel (Ctrl+T)?
Da — și e combinația optimă. Referințele structurate din tabele (Tabel[Coloana]) funcționează perfect în formule Dynamic Array și se extind automat.
FILTER poate returna și coloane specifice, nu tot tabelul?
Da: =FILTER(A2:D100; D2:D100>0) returnează toate coloanele. Dacă vrei doar coloanele 1 și 4: =CHOOSECOLS(FILTER(A2:D100; D2:D100>0); 1; 4).
Dynamic Arrays funcționează cu XLOOKUP sau alte funcții noi?
Absolut. Combinațiile sunt foarte puternice — de exemplu =XLOOKUP(FILTER(...); ...) sau =SORT(XLOOKUP(...)). Funcțiile noi Excel sunt proiectate să lucreze împreună.

