Aceasta este o copie de probă. Site-ul adevărat este excel-group.ro.
Meniu
Formule matriciale avansate Excel – SUMPRODUCT, LET, LAMBDA, MAP, REDUCE

Formule matriciale avansate în Excel: calculezi în un singur pas ce altfel ar lua o coloană

Există o clasă de probleme în Excel pe care formulele obișnuite nu le pot rezolva elegant: calcule pe multiple condiții, agregări condiționate complexe, operații pe seturi de date care se generează în timp de execuție.

Formulele matriciale (array formulas) sunt soluția. Odată înțelese, elimini zeci de coloane auxiliare și sute de formule intermediare.


Formulele matriciale clasice (Excel 2019 și mai vechi)

În versiunile vechi, formulele matriciale se introduc cu Ctrl+Shift+Enter și apar cu acolade {}:

{=SUMA(IF(B2:B100="Nord"; D2:D100; 0))}

Problema: trebuie să știi dinainte că e formulă matricială. Dacă dai Enter simplu, nu funcționează. Se aplică pe o singură celulă și se copiază manual.


Dynamic Arrays (Excel 365/2021): matricele inteligente

Din 2020, Excel 365 face formulele matriciale automat — fără Ctrl+Shift+Enter, cu spill automat:

=FILTER(B2:D100; C2:C100="Nord")

Returnează automat câte rânduri are nevoie, fără să știi dinainte câte.

Restul acestui articol se concentrează pe formule matriciale în Excel 365.


SUMPRODUCT: motorul calculelor matriciale

SUMPRODUCT e funcția matricială universală — funcționează în orice versiune Excel și rezolvă cele mai complexe calcule condiționate.

=SUMPRODUCT(array1 * array2 * array3 * ...)

Logica: înmulțești arrays element cu element → sumezi toate produsele.

Numărarea cu condiții multiple (alternativă la COUNTIFS)

// Câți clienți din Nord cu valoare peste 10.000 și luna curentă?
=SUMPRODUCT(
    (B2:B100="Nord") *
    (D2:D100>10000) *
    (LUNA(A2:A100)=LUNA(AZI()))
)

Fiecare condiție returnează un array TRUE/FALSE. TRUE=1, FALSE=0. Înmulțite = AND logic. Sumă = numărul de rânduri care îndeplinesc toate condițiile.

Suma ponderată cu condiții

// Vânzările ponderate cu marja, doar pentru produsele Premium
=SUMPRODUCT(
    (Produse="Premium") *
    Vanzari *
    Marja
)

Calculul mediei condiționate (alternativă la AVERAGEIFS)

=SUMPRODUCT((B2:B100="Nord") * D2:D100) /
 SUMPRODUCT((B2:B100="Nord") * 1)

LET: variabile în formule — legibilitate și performanță

=LET(
    date_nord; FILTER(Vanzari; Regiuni="Nord");
    total; SUM(date_nord);
    medie; AVERAGE(date_nord);
    IF(total > 100000; "Peste target: " & TEXT(medie; "#,##0"); "Sub target")
)

LET definești variabile intermediare — calculul FILTER(Vanzari; Regiuni="Nord") se face O singură dată, nu de trei ori.

Avantaje:

  • Formula e lizibilă (vezi ce face fiecare pas)
  • Performanță mai bună (expresiile nu se recalculează)
  • Debugging mai ușor

LAMBDA: funcții personalizate refolosibile

LAMBDA transformă orice formulă complexă într-o funcție cu nume — pe care o folosești oriunde în fișier.

// Definire funcție în Name Manager:
Nume: CalculProfit
Referință: =LAMBDA(vanzari; cost_fix; marja;
              vanzari * marja - cost_fix)

// Utilizare:
=CalculProfit(B2; C2; D2)
// sau pe un interval întreg:
=CalculProfit(B2:B100; C2; D2:D100)

Exemplu avansat: funcție de normalizare

Normalizeaza: =LAMBDA(data;
    LET(
        min_val; MIN(data);
        max_val; MAX(data);
        (data - min_val) / (max_val - min_val)
    ))

// Utilizare:
=Normalizeaza(D2:D100)
// Returnează toate valorile normalizate 0-1 într-un singur pas

MAP, REDUCE, SCAN: funcționale pentru manipularea arrays

MAP: aplică o funcție pe fiecare element

// Calculezi marja procentuală pentru fiecare rând:
=MAP(Vanzari; Costuri; LAMBDA(v; c; (v-c)/v))

// Echivalent cu o coloană auxiliară: =(B2-C2)/B2 copiat în jos
// Dar MAP face asta direct în memorie, fără coloana auxiliară

REDUCE: calculezi o valoare cumulată

// Produs cumulat (factorial sau dobândă compusă):
=REDUCE(1; Rate_Lunare; LAMBDA(acc; val; acc * (1 + val)))

// Echivalent cu: (1+r1)*(1+r2)*(1+r3)*...*  dar fără să știi câte luni sunt

SCAN: calculează și returnează fiecare pas intermediar

// Soldul cumulat al unui cont (sold inițial + intrări/ieșiri pe rânduri):
=SCAN(Sold_Initial; Tranzactii; LAMBDA(sold; tranzactie; sold + tranzactie))

Returnează toate soldurile intermediare — perfect pentru graficul de evoluție.


MAKEARRAY și SEQUENCE: generezi date programatic

MAKEARRAY: creezi o matrice cu o formulă per element

// Tabel de multiplicare 10x10:
=MAKEARRAY(10; 10; LAMBDA(r; c; r * c))

SEQUENCE avansată: serii complexe

// Prima zi a fiecărei luni din 2026:
=DATE(2026; SEQUENCE(12); 1)
// Returnează 12 date: 01.01.2026, 01.02.2026, ...

// Zilele lucrătoare din ianuarie 2026:
=FILTER(
    SEQUENCE(31; 1; DATE(2026;1;1); 1);
    WEEKDAY(SEQUENCE(31;1;DATE(2026;1;1);1); 2) <= 5
)

Tehnici de performanță pentru formule matriciale mari

Problema: formule pe 100.000 de rânduri pot fi lente.

Calculul parțial cu LET

// Fără LET: FILTER calculat de 3 ori
=AVERAGE(FILTER(D:D; B:B="Nord")) & " / " &
 MAX(FILTER(D:D; B:B="Nord")) & " / " &
 MIN(FILTER(D:D; B:B="Nord"))

// Cu LET: FILTER calculat o singură dată
=LET(
    date_nord; FILTER(D:D; B:B="Nord");
    AVERAGE(date_nord) & " / " & MAX(date_nord) & " / " & MIN(date_nord)
)

Limitarea intervalului la date reale

// Lent: D:D (1.048.576 celule)
=FILTER(D:D; B:B="Nord")

// Rapid: D2:D1001 (1.000 celule - cât ai date)
Ultimul_Rand = COUNTA(A:A)
=FILTER(OFFSET(D1;1;0;Ultimul_Rand-1;1); OFFSET(B1;1;0;Ultimul_Rand-1;1)="Nord")

Calcule grele → Power Query sau Power Pivot

Dacă o formulă matricială pe 500.000 de rânduri durează 10+ secunde → mută calculul în Power Query (M) sau Power Pivot (DAX). Acolo funcționează cu motorul columnar optimizat pentru volume mari.


Concluzie

Formulele matriciale avansate — SUMPRODUCT, LET, LAMBDA, MAP, REDUCE — transformă Excel dintr-un instrument de calcul celulă-cu-celulă într-un motor de procesare date cu adevărat puternic. Cu ele, elimini coloanele auxiliare, reduci numărul de formule și obții calcule imposibil de realizat altfel.

La Excel Group instruim utilizatori avansați din România și Moldova în tehnici de formule matriciale — de la SUMPRODUCT la LAMBDA și Dynamic Arrays. Contactează-ne.


Întrebări frecvente

Formulele cu LAMBDA pot fi împărtășite cu utilizatori care nu au Excel 365?

Nu — LAMBDA și celelalte funcții noi (MAP, REDUCE, SCAN) necesită Excel 365. La deschiderea în versiuni vechi, formulele apar ca _xlfn.LAMBDA(...) și returnează eroare. Verifici compatibilitatea dacă distribui fișierele la utilizatori cu versiuni mixte de Excel.

SUMPRODUCT poate înlocui complet SUMIFS și COUNTIFS?

Da — și uneori e mai flexibil (condițiile pot fi expresii complexe, nu doar valori simple). SUMIFS e mai rapid pe seturi mari de date pentru calcule simple. Pentru calcule complexe sau condiționate, SUMPRODUCT e mai potrivit.

Există un debugger pentru formulele matriciale complexe?

Instrumentul „Evaluare formulă” (Formule → Evaluare formulă) funcționează și pentru formule matriciale — execuți pas cu pas și vezi fiecare array intermediar. E cel mai bun instrument de debugging nativ.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *