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

XLOOKUP i dopasowywanie danychXLOOKUP & data matching

Cała lekcja na jednej kartce A4 — wydrukuj i powieś nad biurkiem.The whole lesson on one A4 sheet — print it and pin it above your desk.

Składnia / skrótySyntax / shortcuts

X.WYSZUKAJ (XLOOKUP) — nowy standard (Excel 2021 / Microsoft 365):

XLOOKUP — the new standard (Excel 2021 / Microsoft 365):

=X.WYSZUKAJ(co_szukasz; gdzie_szukać; co_zwrócić; [gdy_nie_znaleziono])=XLOOKUP(lookup_value; lookup_array; return_array; [if_not_found]) =X.WYSZUKAJ(A2;Cennik!A:A;Cennik!B:B;"Brak w cenniku") — kod z A2 → cena z cennika=XLOOKUP(A2;PriceList!A:A;PriceList!B:B;"Not in price list") — code from A2 → its price

Po Ctrl+T na cenniku — odwołania strukturalne (czytelniejsze i odporne na rosnące dane):

After Ctrl+T on the price list — structured references (clearer and growth-proof):

=X.WYSZUKAJ(A2;Cennik[Kod produktu];Cennik[Cena])=XLOOKUP(A2;PriceList[Product Code];PriceList[Price])

Starszy Excel (2019 i wcześniejsze):

Older Excel (2019 and earlier):

=WYSZUKAJ.PIONOWO(A2;Cennik!A:B;2;FAŁSZ) — czwarty argument FAŁSZ jest obowiązkowy!=VLOOKUP(A2;PriceList!A:B;2;FALSE) — the fourth argument FALSE is mandatory!

Deska ratunkowa na każdą wersję — INDEKS (INDEX) + PODAJ.POZYCJĘ (MATCH):

The life raft for every version — INDEX + MATCH:

=INDEKS(Cennik!B:B;PODAJ.POZYCJĘ(A2;Cennik!A:A;0)) — 0 = dokładne dopasowanie=INDEX(PriceList!B:B;MATCH(A2;PriceList!A:A;0)) — 0 = exact match
CechaFeatureWYSZUKAJ.PIONOWO (VLOOKUP)X.WYSZUKAJ (XLOOKUP)
KierunekDirection tylko w praworight only dowolnyany
Brak wartościMissing value #N/D! → owijaj w JEŻELI.BŁĄDwrap in IFERROR wbudowany argumentbuilt-in if_not_found
Domyślne dopasowanieDefault match niedokładne (pułapka!)approximate (trap!) dokładne (bezpieczne)exact (safe)

PułapkiPitfalls

  • Spacja na końcu kodu → „PROD-123” ≠ „PROD-123 ” i formuła zwraca #N/D!. Leczenie: USUŃ.ZBĘDNE.ODSTĘPY (TRIM) albo PODSTAW (SUBSTITUTE).
  • A trailing space in a code → "PROD-123" ≠ "PROD-123 " and the formula returns #N/A!. Cure: TRIM() or SUBSTITUTE().
  • Duplikaty w tabeli szukania → X.WYSZUKAJ zwraca pierwszy traf i milczy. Kolumna klucza musi być unikalna.
  • Duplicates in the lookup table → XLOOKUP returns the first hit and stays silent. The key column must be unique.
  • Tekst „123” ≠ liczba 123 → ujednolić typy (Dane → Tekst jako kolumny).
  • Text "123" ≠ number 123 → force one type (Data → Text to Columns).
  • Wielkość liter jest ignorowana — „ABC” = „abc”. Gdy to różne kody: PORÓWNAJ (EXACT).
  • Letter case is ignored — "ABC" = "abc". When they are different codes: EXACT().
  • WYSZUKAJ.PIONOWO bez FAŁSZ → niedokładne dopasowanie zwraca losowe wartości. Przy kodach produktów to katastrofa.
  • VLOOKUP without FALSE → approximate match returns random values. With product codes that's a disaster.
  • Całe kolumny (A:A) w dużych plikach → Excel mieli milion wierszy. Używaj zakresów albo Tabel.
  • Whole columns (A:A) in large files → Excel grinds through a million rows. Use ranges or Tables.
  • Ręczne przepisywanie zamiast formuły → błąd co dziesiąty wiersz i zero aktualizacji przy zmianie cennika. Złota zasada: nigdy nie przepisuj tego, co Excel może dopasować sam.
  • Manual copying instead of a formula → an error every tenth row and no updates when the price list changes. Golden rule: never copy by hand what Excel can match on its own.
  • Ślepe zaufanie danym „z systemu” → ERP-y kochają spacje i mieszane typy. Zawsze przejrzyj pierwsze 10 wierszy przed napisaniem formuły.
  • Blind trust in “system data” → ERPs love spaces and mixed types. Always review the first 10 rows before writing the formula.

Checklista — sprawdź, czy umieszChecklist — test yourself

  • Rozpoznam sytuację „dane trzeba połączyć z innej tabeli” (cennik, słownik, rejestr).
  • Recognise the “data must be pulled from another table” situation (price list, dictionary, register).
  • Napiszę X.WYSZUKAJ (XLOOKUP) z argumentem if_not_found zamiast błędu #N/D!.
  • Write an XLOOKUP with the if_not_found argument instead of the #N/A! error.
  • Wyjaśnię, czym X.WYSZUKAJ wygrywa z WYSZUKAJ.PIONOWO (VLOOKUP).
  • Explain how XLOOKUP beats VLOOKUP.
  • Napiszę INDEKS+PODAJ.POZYCJĘ (INDEX+MATCH) dla starszej wersji Excela.
  • Write INDEX+MATCH as a fallback for older Excel versions.
  • Użyję odwołań strukturalnych po zamianie cennika w Tabelę (Ctrl+T).
  • Use structured references after turning the price list into a Table (Ctrl+T).
  • Wykryję i naprawię cztery klasyki: spacje, duplikaty, typy danych, wielkość liter.
  • Detect and fix the four classics: spaces, duplicates, data types, letter case.
  • Zmienię cenę w cenniku i zobaczę, jak zamówienia aktualizują się same.
  • Change a price in the price list and watch the orders update by themselves.