Pełna lekcjaFull lesson
Sowa — maskotka Owl-Analytics
Sowia Ściąga · Darmowa AkademiaOwl Cheat Sheet · Free Academy

Ukryte supermoce ExcelaExcel’s hidden superpowers

Wszystkie funkcje poniżej wymagają Microsoft 365 — starszy Excel odpowie #NAZWA?.All functions below require Microsoft 365 — older Excel answers with #NAME?.

Składnia / skrótySyntax / shortcuts

Dynamiczne tablice — jedna formuła zwraca całą tabelę i „rozlewa się” na sąsiednie komórki:

Dynamic arrays — one formula returns a whole table and “spills” onto neighbouring cells:

=FILTRUJ(A2:C9;A2:A9="Północ") — FILTER: przefiltrowana tabela, która żyje=FILTER(A2:C9,A2:A9="North") — a filtered table that stays alive =SORTUJ(UNIKATOWE(A2:A9)) — SORT+UNIQUE: lista bez powtórek, alfabetycznie=SORT(UNIQUE(A2:A9)) — a de-duplicated list, alphabetical =SEKWENCJA(4;3;100;5) — SEQUENCE: siatka 4×3 od 100 co 5; z DATA() nazwy miesięcy=SEQUENCE(4,3,100,5) — a 4×3 grid from 100 step 5; with DATE() month names =ILE.WIERSZY(E2#) — operator # to odwołanie do całego rozlanego wyniku=ROWS(E2#) — the # operator refers to the entire spilled result

LET — pary nazwa-wartość, wynik na końcu. Czytelniej i szybciej (Excel liczy nazwany fragment raz):

LET — name-value pairs, the result at the end. Clearer and faster (Excel computes a named fragment once):

=LET(s;SUMA(B2:B5);r;JEŻELI(s>=60000;0,12;JEŻELI(s>=40000;0,07;0));s*(1-r))

LAMBDA — własna funkcja bez VBA. Definicję rejestrujesz w Menedżerze nazw (Ctrl+F3) pod nazwą, np. NettoZBrutto:

LAMBDA — your own function without VBA. Register the definition in the Name Manager (Ctrl+F3) under a name, e.g. NetFromGross:

=LAMBDA(brutto;stawka;brutto/(1+stawka)) → potem: =NettoZBrutto(A4;$B$1)=LAMBDA(gross,rate,gross/(1+rate)) → then: =NetFromGross(A4,$B$1) =SCAN(0;B2:B8;LAMBDA(a;b;a+b)) — suma narastająca jedną formułą=SCAN(0,B2:B8,LAMBDA(a,b,a+b)) — a running total in one formula

GRUPUJ.WEDŁUG (GROUPBY) — tabela przestawna w jednej formule; przelicza się sama (2D: PRZESTAWIAJ.WEDŁUG / PIVOTBY):

GROUPBY — a pivot table in a single formula; recalculates itself (2D: PIVOTBY):

=GRUPUJ.WEDŁUG(A1:A9;B1:B9;SUMA;3;1) — grupy, wartości, agregat, nagłówki, suma końcowa=GROUPBY(A1:A9,B1:B9,SUM,3,1) — groups, values, aggregate, headers, grand total

Chirurgia tekstu i reszta arsenału:

Text surgery and the rest of the arsenal:

=TEKST.PO(A2;"-";-1) — TEXTAFTER z -1 = „od końca”; TEKST.PRZED = TEXTBEFORE=TEXTAFTER(A2,"-",-1) — with -1 = "from the end"; TEXTBEFORE takes the part before =ZŁĄCZ.TEKSTY(", ";PRAWDA;A2:A10) — TEXTJOIN skleja separatorem i pomija puste=TEXTJOIN(", ",TRUE,A2:A10) — glues with a delimiter and skips empties =WYCINEK(SORTUJ(A2:C100;3;-1);10) — TAKE: dziesięć najlepszych wierszy; POMIŃ = DROP=TAKE(SORT(A2:C100,3,-1),10) — the ten best rows; DROP strips rows

PułapkiPitfalls

  • #ROZLANIE! → coś stoi w obszarze rozlaniu (wpis, scalenie, Tabela). Wyczyść miejsce. Formuł tablicowych nie wstawia się do wnętrza Tabeli (Ctrl+T).
  • #SPILL! → something sits in the spill area (an entry, a merge, a Table). Clear the space. Array formulas do not belong inside a Table (Ctrl+T).
  • #NAZWA? u odbiorcy → to funkcje Microsoft 365. Zanim wyślesz plik, zapytaj o wersję albo zamroź wyniki jako wartości.
  • #NAME? at the recipient's → these are Microsoft 365 functions. Ask about their version before sending, or freeze results as values.
  • Całe kolumny jako argumenty (=FILTRUJ(A:C;A:A="Północ")) → milion wierszy mielony przy każdej zmianie. Zakres albo Tabela jako źródło.
  • Whole columns as arguments (=FILTER(A:C,A:A="North")) → a million rows ground on every change. Use a range or a Table as the source.
  • Edycja w środku rozlanego wyniku → zmieniasz tylko komórkę-kotwicę z formułą; reszta jest „wynajęta”.
  • Editing inside a spilled result → you only change the anchor cell with the formula; the rest is “rented”.
  • GRUPUJ.WEDŁUG zamiast przestawnej „bo nowocześniej” → to narzędzie pod obliczenia i dashboardy, nie pod klikalną eksplorację dla odbiorcy.
  • GROUPBY instead of a pivot “because it's newer” → it is a calculation and dashboard tool, not a click-driven exploration tool for the audience.
  • Nazwa własnej funkcji LAMBDA → bez spacji i nie może wyglądać jak adres komórki: NettoZBrutto przejdzie, Netto Z Brutto nie.
  • A custom LAMBDA name → no spaces and it cannot look like a cell address: NetFromGross passes, Net From Gross does not.
  • LOSOWA.TABLICA (RANDARRAY) przelicza się ciągle → dane testowe zamrażaj kopiuj-wklej jako wartości.
  • RANDARRAY recalculates constantly → freeze test data with copy-paste as values.

Checklista — sprawdź, czy umieszChecklist — test yourself

  • Wyciągnę FILTRUJ (FILTER) wiersze jednego regionu — bez kolumn pomocniczych.
  • Pull one region's rows with FILTER — no helper columns.
  • Wypiszę SORTUJ(UNIKATOWE()) listę bez powtórek, która sama się aktualizuje.
  • List unique values with SORT(UNIQUE()) — self-updating.
  • Wygeneruję SEKWENCJĄ (SEQUENCE) numerację i osie czasu bez przeciągania.
  • Generate numbering and time axes with SEQUENCE — no dragging.
  • Przepiszę brzydką formułę na LET z nazwanymi obliczeniami pośrednimi.
  • Rewrite an ugly formula as LET with named intermediate calculations.
  • Zarejestruję własną funkcję LAMBDA w Menedżerze nazw (Ctrl+F3) i użyję jej jak SUMA.
  • Register a custom LAMBDA in the Name Manager (Ctrl+F3) and call it like SUM.
  • Policzę SCAN-em sumę narastającą bez ściągania formuły w dół.
  • Compute a running total with SCAN — no dragging a formula down.
  • Podsumuję tabelę GRUPUJ.WEDŁUG (GROUPBY) z sumą końcową — i wiem, kiedy zamiast tego wstawić przestawną.
  • Summarise a table with GROUPBY including a grand total — and know when to insert a pivot instead.
  • Rozbiję kod KL-WAW-0042 funkcjami TEKST.PRZED / TEKST.PO (TEXTBEFORE / TEXTAFTER).
  • Split the code KL-WAW-0042 with TEXTBEFORE / TEXTAFTER.
  • Wiem, co znaczy #ROZLANIE! (#SPILL!) i nie panikuję, tylko czyszczę obszar.
  • I know what #SPILL! means — I clear the area instead of panicking.