Średnia z warunkami: ŚREDNIA.WARUNKÓW i jej typowe pułapki

0
2
Rate this post

Nawigacja:

Średnia z warunkami – po co w ogóle kombinować?

Prosta średnia kontra rzeczywiste raportowanie

Funkcja ŚREDNIA() jest jedną z pierwszych poznawanych formuł w Excelu. Szybko jednak okazuje się, że średnia ze wszystkich wierszy rzadko odpowiada na pytania, które zadaje biznes. Kierownictwo nie pyta o średnią sprzedaż ze wszystkich miesięcy, tylko o średnią dla konkretnego regionu, nowej linii produktów albo tylko dla aktywnych kontraktów.

W takim środowisku prosta średnia przestaje wystarczać. Potrzebny jest mechanizm, który z całego zestawu danych wybierze tylko te pozycje, które spełniają określone kryteria – a dopiero potem policzy z nich średnią. Tak działa średnia warunkowa w Excelu, a najpełniej obsługuje ją funkcja ŚREDNIA.WARUNKÓW.

Jeżeli arkusz ma kilkaset wierszy, część projektów jest zamknięta, część nieaktywna, a część to pilotaże, to prosta średnia z kolumny „Przychód” często jest bardziej myląca niż pomocna. Funkcja ŚREDNIA.WARUNKÓW pozwala w jednym kroku wyodrębnić np. tylko projekty aktywne, tylko z danego kraju i tylko z ostatniego roku, bez ręcznego filtrowania i kopiowania danych.

Krótki przykład z praktyki: sprzedaż i wynagrodzenia

Wyobraźmy sobie dział sprzedaży, w którym jest kilkudziesięciu handlowców w różnych regionach. Pojawia się pytanie: „Jaka jest średnia sprzedaż na jednego handlowca w regionie Północ, ale tylko dla tych, którzy są zatrudnieni na pełen etat?”. Funkcja ŚREDNIA() nie ma pojęcia, czym jest region ani forma zatrudnienia. Potrzebne są warunki.

Podobnie w dziale HR – prosta średnia z wynagrodzeń działu jest mało informacyjna, jeśli nie odfiltruje się praktykantów, osób na pół etatu czy pracowników w okresie wypowiedzenia. Menedżer często pyta o „średnie wynagrodzenie handlowca” albo „średnią premię dla zespołu wsparcia technicznego”, ale już niekoniecznie o średnią z całej firmy.

Funkcja ŚREDNIA.WARUNKÓW krok po kroku pozwala dokładnie odwzorować takie pytania: wskazać zakres, z którego ma być policzona średnia, a potem dodać kolejne kryteria opisujące, które wiersze w ogóle mają zostać wzięte pod uwagę.

Co wiemy, a czego brakuje

Większość użytkowników zna kombinację SUMA() + ILE.LICZB() albo używa ŚREDNIA(). Bardziej zaawansowani opanowali SUMA.JEŻELI() i SUMA.WARUNKÓW(). Na tym etapie pojawia się pytanie kontrolne: co wiemy? Wiemy, jak dodać liczby z warunkiem i jak policzyć prostą średnią. Czego nie wiemy? Jak połączyć te dwa światy w jeden spójny mechanizm, który zadziała pewnie w każdym raporcie.

Wydaje się, że wystarczy „kolejna funkcja” i problem znika, ale przy średniej pojawiają się dodatkowe pułapki: liczenie mianownika, traktowanie pustych komórek, interpretacja tekstów, dat i zakresów. Błąd w średniej warunkowej jest mniej oczywisty niż błąd w sumie, bo wyniki „wyglądają” wiarygodnie. Dlatego funkcję ŚREDNIA.WARUNKÓW trzeba rozumieć, a nie tylko znać jej nazwę.

Konsekwencje źle policzonej średniej warunkowej

Średnia jest wskaźnikiem, który łatwo cytować i umieszczać na prezentacjach. Jeśli jednak jest policzona nieprecyzyjnie, może prowadzić do błędnych decyzji. W praktyce oznacza to m.in.:

  • zaniżenie lub zawyżenie wskaźników efektywności zespołu (np. włączenie nieaktywnych projektów do mianownika),
  • niewłaściwe porównanie regionów, gdy każdy liczony jest innym wzorem,
  • przekłamanie dashboardu KPI – średnie na wykresach wyglądają poprawnie, ale uwzględniają dane, które miały być wyłączone,
  • spory na linii analityk–menedżer: „dlaczego u mnie średnia wychodzi inaczej?”.

Funkcja ŚREDNIA.WARUNKÓW jest narzędziem, które rozwiązuje realne problemy analityczne, ale wymaga dyscypliny przy budowaniu formuł i dobrego opanowania mechaniki warunków.

Składnia i logika ŚREDNIA.WARUNKÓW – fundament bez ozdobników

Pełna składnia i rola poszczególnych argumentów

Podstawowy zapis funkcji średniej warunkowej wygląda następująco:

ŚREDNIA.WARUNKÓW(zakres_średniej; zakres_kryteriów1; kryteria1; [zakres_kryteriów2; kryteria2]; …)

Znaczenie każdego argumentu:

  • zakres_średniej – komórki, z których Excel policzy średnią, ale tylko dla tych wierszy, które spełniają wszystkie warunki,
  • zakres_kryteriów1 – zakres, w którym sprawdzany będzie pierwszy warunek,
  • kryteria1 – zasada filtrująca dla zakresu_kryteriów1 (tekst, liczba, wyrażenie typu „>1000” itp.),
  • zakres_kryteriów2, kryteria2, … – kolejne pary, które działają jak dodatkowe filtry nakładane na te same wiersze.

Excel przechodzi po wierszach i zadaje pytanie: czy w danym wierszu wszystkie kryteria są spełnione? Jeśli tak, bierze wartość z zakres_średniej i włącza ją do obliczeń. Jeśli choć jedno kryterium jest niespełnione, wiersz jest ignorowany.

Parowanie zakresów: te same wymiary albo kłopoty

Kluczowym wymogiem funkcji ŚREDNIA.WARUNKÓW jest to, aby zakres_średniej oraz wszystkie zakresy_kryteriów miały identyczne wymiary. Oznacza to tę samą liczbę wierszy i kolumn. Przykład:

  • zakres_średniej: B2:B101 (100 komórek w jednej kolumnie),
  • zakres_kryteriów1: A2:A101 (te same wiersze, inna kolumna – akceptowalne),
  • zakres_kryteriów2: C2:C101 (również zgodne wymiary).

Jeżeli któryś z zakresów ma inny rozmiar, Excel zwróci błąd #ARG! albo – w zależności od wersji i konstrukcji formuły – policzy coś niezgodnie z intencją. Ryzyko rośnie, gdy użytkownik przeciąga formułę w dół i części zakresów zaczynają się „rozjeżdżać”.

Bezpieczna praktyka to używanie adresów bezwzględnych (z dolarem, np. $A$2:$A$101) dla wszystkich zakresów używanych w ŚREDNIA.WARUNKÓW, tak aby przesuwanie formuły nie zmieniało ich wielkości ani położenia względem siebie.

Jak Excel liczy średnią przy wielu warunkach

Mechanizm obliczania jest dwuetapowy:

  1. Excel wyznacza zbiór komórek w zakres_średniej, które odpowiadają wierszom spełniającym wszystkie kryteria.
  2. Z tego zbioru usuwa elementy, które nie mogą uczestniczyć w obliczaniu średniej:
    • puste komórki,
    • komórki z tekstem (chyba że są wynikiem formuł zwracających tekst, wtedy i tak nie są liczbami),
    • komórki z błędami (błąd najczęściej rozlewa się na całą funkcję).

Do licznika trafia suma pozostałych wartości liczbowych, do mianownika – ich liczba. Jeśli żaden wiersz nie spełnia kryteriów albo wszystkie pasujące wiersze mają w zakres_średniej puste komórki lub tekst, Excel zwróci błąd #DZIEL/0!.

Z tego wynika pierwsza poważna pułapka: puste komórki a wynik średniej. ŚREDNIA.WARUNKÓW ignoruje puste komórki w zakresie_średniej, dzięki czemu średnia nie jest sztucznie obniżana przez brak danych. Jeśli natomiast zera mają być traktowane jako brak danych, trzeba je zastąpić pustym wynikiem (np. „” w formule) albo przefiltrować w inny sposób.

Wykresy finansowe, laptop i lupa na biurku analityka
Źródło: Pexels | Autor: Leeloo The First

Podstawowe przykłady – jeden warunek, jeden raport

ŚREDNIA.WARUNKÓW jako odpowiednik średniej po filtrze

Prosty przypadek: tabela z miesięczną sprzedażą, w kolumnie A nazwy handlowców, w kolumnie B sprzedaż, w kolumnie C region. Pytanie: „Jaka jest średnia sprzedaż w regionie Północ?”. Formuła może wyglądać tak:

=ŚREDNIA.WARUNKÓW(B2:B100; C2:C100; „Północ”)

Excel sprawdza wszystkie wiersze w C2:C100 i tam, gdzie jest „Północ”, zabiera odpowiadającą wartość z B2:B100 do obliczania średniej. To działanie odpowiada ręcznemu użyciu filtra na kolumnie C (tylko Północ) i policzeniu ŚREDNIA() po kolumnie B, ale jest zautomatyzowane i aktualizuje się po dopisaniu nowych danych.

W praktyce to właśnie taki prosty przykład jest pierwszym krokiem do stosowania średniej warunkowej w Excelu. Wielu użytkowników po kilku razach stwierdza, że to „średnia po filtrze bez filtra”, co dobrze oddaje logikę działania funkcji.

Kryteria tekstowe: stanowiska i nazwy klientów

Z funkcją ŚREDNIA.WARUNKÓW bardzo często łączy się kryteria tekstowe. Przykłady biznesowe:

  • średnie wynagrodzenie pracownika na stanowisku „Handlowiec”,
  • średni czas realizacji zleceń dla „Klient A”,
  • średnia liczba reklamacji dla produktu „Seria X”.

Zakładając, że stanowisko jest w kolumnie C, a wynagrodzenie w kolumnie D, formuła może wyglądać tak:

=ŚREDNIA.WARUNKÓW(D2:D200; C2:C200; „Handlowiec”)

Ważna jest tu dokładność zapisu tekstu – funkcja domyślnie nie jest czuła na wielkość liter („handlowiec” i „Handlowiec” są równoznaczne), ale wszelkie spacje, myślniki czy dodatkowe znaki mają znaczenie. Częstą przyczyną pozornie błędnych wyników jest ukryta spacja na końcu nazwy stanowiska lub klienta w źródłowych danych.

Forma kryteriów: „>1000” kontra >1000

Dla kryteriów liczbowych i datowych najczęściej stosuje się zapis w postaci łańcucha tekstowego, np.:

  • „>1000” – większe niż 1000,
  • „<=500” – mniejsze lub równe 500,
  • „<>0” – różne od zera.

To właśnie zapis w cudzysłowie jest poprawnym sposobem tworzenia kryteriów w ŚREDNIA.WARUNKÓW. Mieszanie notacji typu >1000 bez cudzysłowu kończy się błędem składni albo niejasnym wynikiem, bo Excel próbuje zinterpretować operator „>” poza kontekstem. Poprawnym sposobem budowy dynamicznych kryteriów (odwołujących się do komórek) jest łączenie ich operatorem &:

=ŚREDNIA.WARUNKÓW(B2:B100; B2:B100; „>”&E1)

Jeżeli użytkownik wprowadzi do komórki E1 wartość 1000, kryterium „>”&E1 stanie się tekstem „>1000”, który Excel prawidłowo zinterpretuje. Bez tego połączenia funkcja będzie się wykładać na składni.

Wielokrotne warunki – AND w praktyce Excela

Logika spójnika „i” – wszystkie warunki muszą być spełnione

ŚREDNIA.WARUNKÓW umożliwia zastosowanie więcej niż jednego kryterium. Kluczowy fakt: wszystkie te kryteria są połączone logicznie spójnikiem „i” (AND). Oznacza to, że każdy wiersz musi spełnić wszystkie warunki, aby jego wartość została włączona do średniej.

Przykład: tabela z kolumnami:

  • Region (kolumna A),
  • Produkt (kolumna B),
  • Rok (kolumna C),
  • Sprzedaż (kolumna D).

Pytanie: „Jaka jest średnia sprzedaż tylko dla regionu Północ, produktu A w roku 2024?”. Jedna z możliwych formuł:

=ŚREDNIA.WARUNKÓW(D2:D1000; A2:A1000; „Północ”; B2:B1000; „A”; C2:C1000; 2024)

W tym zapisie funkcja wybierze tylko te wiersze, gdzie region = „Północ” i produkt = „A” i rok = 2024. Jeśli chociaż jeden warunek w danym wierszu nie jest spełniony, ten wiersz nie jest brany pod uwagę.

Czytelny zapis wielu warunków

Przy dwóch lub trzech warunkach formuła mieści się w jednym wierszu i jest dość przejrzysta. Gdy warunków robi się pięć, sześć lub więcej, pojawia się problem czytelności. W takich sytuacjach pomaga kilka prostych zasad:

  • Każdą parę zakres_kryteriów; kryteria trzymać w jednej linii i nie mieszać kolejności zakresów.
  • Grupowanie logiczne w wielokrotnych kryteriach

    Przy rozbudowanych raportach dużo zależy od samego zapisu formuły. Gdy w formule pojawia się kilka lub kilkanaście par zakres_kryteriów; kryteria, łatwo o błąd, który trudno wychwycić gołym okiem. Pomaga proste „porządkowanie” składni:

  • pary zakres–kryterium zapisywane sekwencyjnie, bez wtrącania innych argumentów między nie,
  • stosowanie podziałów wiersza (Alt+Enter w pasku formuły) tak, aby każda para była w osobnej linii,
  • konsekwentne grupowanie kryteriów wg logiki biznesowej (np. najpierw filtry „kto” i „co”, potem „kiedy” i „ile”).

Efekt jest prosty: gdy formuła zacznie zwracać nieoczekiwane wyniki, łatwiej zadać pytanie „który warunek nie działa tak, jak zakładaliśmy?” zamiast „gdzie właściwie kończy się ten zakres?”.

Łączenie tabel faktów z wymiarami – klasyczny układ raportowy

W wielu plikach Excela powtarza się ten sam schemat: jedna tabela z transakcjami (faktami) oraz kilka mniejszych tabel słownikowych (produkty, regiony, kategorie). ŚREDNIA.WARUNKÓW często pracuje właśnie na tej „tabeli faktów”, a kryteria odnoszą się do kolumn typu:

  • kod produktu lub nazwa kategorii,
  • sprzedawca, kanał dystrybucji,
  • data lub okres rozliczeniowy.

W takiej konstrukcji funkcja staje się narzędziem do budowania mini–kostki analitycznej. Z technicznego punktu widzenia nadal mówimy o filtrach typu AND nakładanych w jednym zakresie wierszy, ale z perspektywy użytkownika to już konkretny raport: „średnia wartość transakcji klienta X w kanale online w ostatnim kwartale”.

Symulacja spójnika OR jednym zakresem kryteriów

ŚREDNIA.WARUNKÓW nie ma wbudowanego spójnika „lub” (OR) między parami kryteriów. Ten spójnik można zasymulować w obrębie jednego zakresu_kryteriów, korzystając ze znaków wieloznacznych i z odpowiednio przygotowanych danych. Przykład:

Założenie: w kolumnie B znajduje się nazwa produktu, w kolumnie C sprzedaż. Interesuje nas średnia dla produktów, których nazwa zawiera „A1” lub „A2” (np. „Linia A1”, „Seria A2”). Jedna z dróg to użycie znaku *:

=ŚREDNIA.WARUNKÓW(C2:C1000; B2:B1000; „Linia A1”; B2:B1000; „Linia A2”)

Taki zapis nie zadziała jako OR, bo Excel odczyta go jako dwa warunki AND na tym samym zakresie: nazwa ma być jednocześnie „Linia A1” i „Linia A2”. Dla tego podejścia wynik będzie pusty lub błędny. Realny spójnik OR w ramach jednego zakresu łatwiej uzyskać w inny sposób:

  • użyć funkcji pomocniczej (np. kolumna z flagą „A1 lub A2”),
  • zastąpić ŚREDNIA.WARUNKÓW kombinacją formuł tablicowych lub funkcji LET/SUMA.ILOCZYNÓW (w nowszych wersjach Excela).

Widać tu pierwsze ograniczenie: ŚREDNIA.WARUNKÓW sprawnie obsługuje „i jednocześnie”, natomiast „lub” wymaga obejść konstrukcyjnych.

Rozbijanie złożonych warunków na kolumny pomocnicze

Gdy zbiór reguł biznesowych robi się gęsty, sam arkusz często staje się czytelniejszy, jeśli logikę rozłożymy na kilka prostych testów. Zamiast jednego, długiego wywołania ŚREDNIA.WARUNKÓW, można zastosować np. dwie lub trzy kolumny pomocnicze z formułami zwracającymi PRAWDA/FAŁSZ lub 1/0. Następnie ŚREDNIA.WARUNKÓW odwołuje się tylko do jednej kolumny, która zawiera finalny „wyrok”: wiersz kwalifikujący się do średniej lub odrzucony.

Takie podejście jest szczególnie praktyczne, gdy kryteria są dyskusyjne lub często modyfikowane. Kolumny pomocnicze „pokazują” logikę w sposób jawny – łatwo sprawdzić, które wiersze spełniają dane warunki, jeszcze przed podliczeniem średniej.

Dokumenty z analizą giełdową, lupa, długopisy i okulary na biurku
Źródło: Pexels | Autor: Hanna Pad

ŚREDNIA.JEŻELI vs ŚREDNIA.WARUNKÓW – kiedy która funkcja

Różnice w składni i możliwościach

Na pierwszy rzut oka obie funkcje robią to samo: liczą średnią z warunkiem. Różnica techniczna jest jednak dość prosta:

  • ŚREDNIA.JEŻELI(zakres; kryteria; [zakres_średniej]) – jeden warunek, maksymalnie jeden zakres kryteriów,
  • ŚREDNIA.WARUNKÓW(zakres_średniej; zakres_kryteriów1; kryteria1; …) – wiele par zakres–kryterium, logika AND.

W praktyce ŚREDNIA.JEŻELI wystarcza przy prostych raportach: średnia sprzedaż jednego handlowca, średnia wartość zamówienia powyżej pewnej kwoty, średni czas realizacji dla jednej kategorii zgłoszeń. Gdy tylko pojawia się drugi niezależny filtr (np. „konkretny handlowiec” i jednocześnie „dany kwartał”), szybciej i przejrzyściej zapisuje się formułę w wersji ŚREDNIA.WARUNKÓW.

Domyślne zachowanie zakresów w ŚREDNIA.JEŻELI

W strukturze ŚREDNIA.JEŻELI istotną rolę odgrywa argument zakres. To on jednocześnie definiuje, gdzie Excel szuka wartości porównywanych z kryterium i – o ile nie podamy zakresu_średniej – skąd pobiera dane do liczenia średniej. Schemat działania wygląda wtedy tak:

  1. Excel sprawdza wiersz po wierszu komórki w zakresie, szukając tych, które spełniają kryterium,
  2. średnią liczy bezpośrednio z tych samych komórek, które przeszły „test”.

Jeśli zakres_średniej jest podany, funkcja przesuwa się po wierszach równolegle: odpowiednik wiersza spełniającego kryterium brany jest z innego obszaru. Mechanizm jest podobny do ŚREDNIA.WARUNKÓW, ale ograniczony do jednej pary zakres–kryterium.

Kiedy prostota jest zaletą – zastosowania ŚREDNIA.JEŻELI

W wielu firmowych arkuszach dominują właśnie proste pytania analityczne. „Jaka jest średnia liczba godzin nadliczbowych w dziale Księgowość?”, „Jaka była średnia frekwencja na szkoleniu X?”. Tam ŚREDNIA.JEŻELI ma jedną silną przewagę: jest łatwa do odczytania nawet przez osobę, która rzadko pracuje z formułami.

Przykład:

=ŚREDNIA.JEŻELI(C2:C500; „Księgowość”; D2:D500)

Odczyt: „średnia z D2:D500 tam, gdzie C2:C500 równe Księgowość”. Bez dodatkowej logiki, bez mnożenia parametrów. Dla codziennych zestawień to często wystarczający poziom precyzji.

Gdzie ŚREDNIA.JEŻELI zaczyna ograniczać

Trudności pojawiają się w momencie, gdy raport ma uwzględnić kilka jednoczesnych filtrów. Przykłady z praktyki:

  • średnia wartość zamówienia klienta X w danym kwartale,
  • średni czas reakcji na zgłoszenia priorytetu „wysoki” z kanału e-mail,
  • średnia marża w regionie Północ dla produktów serii A.

Tu pojedynczy warunek nie wystarcza. Możliwe jest budowanie zagnieżdżonych formuł, czasem nawet kilku ŚREDNIA.JEŻELI połączonych ze sobą, ale czytelność szybko spada. Dodatkowo zmiana jednego kryterium może wymagać przeróbki całej struktury formuły. W tej klasie zadań wygodniej i bezpieczniej sięgnąć po ŚREDNIA.WARUNKÓW.

Kwestia kompatybilności wstecznej

W starszych wersjach Excela (sprzed wprowadzenia funkcji z końcówką „.WARUNKÓW”) użytkownicy mieli do dyspozycji jedynie wariant „JEDEN WARUNEK”: ŚREDNIA.JEŻELI, SUMA.JEŻELI, LICZ.JEŻELI. Rozbudowane scenariusze wymagały budowania formuł tablicowych, stosowania SUMA.ILOCZYNÓW albo kolumn pomocniczych.

Dlatego przy pracy na plikach krążących między różnymi wersjami pakietu warto sprawdzić, z jakiej edycji Excela korzystają inni użytkownicy. Jeśli część zespołu wciąż pracuje na starszych wydaniach, oparcie kluczowych raportów wyłącznie na ŚREDNIA.WARUNKÓW może skończyć się błędem #NAZWA? u części odbiorców. Czasami bezpieczniej jest zostawić prostszą, ale kompatybilną ŚREDNIA.JEŻELI, nawet kosztem dodatkowych kolumn pomocniczych.

Kryteria tekstowe, daty i operatory – co działa, a co zaczyna się mylić

Kryteria tekstowe z symbolami wieloznacznymi

W przypadku tekstu funkcje ŚREDNIA.JEŻELI i ŚREDNIA.WARUNKÓW obsługują znaki specjalne używane również w filtrach automatycznych:

  • * – dowolny ciąg znaków (w tym pusty),
  • ? – dokładnie jeden dowolny znak.

To otwiera drogę do bardziej elastycznych filtrów. Przykłady:

  • „A*” – tekst zaczynający się od litery A (np. „Adam”, „A12/2024”),
  • „*Sp. z o.o.” – tekst kończący się frazą „Sp. z o.o.”,
  • „??-2024” – dowolne dwa znaki, myślnik i 2024 (np. „01-2024”, „AB-2024”).

Stosowanie tych wzorców jest przydatne szczególnie wtedy, gdy struktura kodów lub nazw jest stabilna, ale ich długość (lub prefiksy/sufiksy) się zmienia. Problem pojawia się, gdy dane w źródle nie trzymają jednego formatu – wtedy średnia przestaje obejmować cały oczekiwany zakres.

Pułapka ukrytych znaków w tekście

Typowy scenariusz z codziennej pracy: raport obejmuje tylko część zamówień, choć wszystkie wyglądają podobnie. Co wiemy? Funkcja działa, nie zwraca błędu, ale wyniki nie zgadzają się z oczekiwaniami. Czego nie wiemy? Jakie dokładnie znaki kryją się w źródłowych komórkach.

Źródłem kłopotów są między innymi:

  • spacje na początku lub końcu tekstu,
  • znaki tabulacji i tzw. spacje niełamiące (np. kopiowane z PDF lub stron WWW),
  • różne odmiany myślnika czy cudzysłowu (inne kody znaków).

ŚREDNIA.WARUNKÓW porównuje teksty „dosłownie” (z wyjątkiem wielkości liter), zatem „Klient A” i „Klient A ” to dla niej dwa różne ciągi znaków. Takie rozbieżności warto neutralizować jeszcze przed użyciem funkcji, np. korzystając z kombinacji OCZYŚĆ(), USUŃ.ZBĘDNE.ODSTĘPY() albo poprzez ujednolicenie danych w Power Query.

Daty jako liczby – jak Excel je naprawdę widzi

Daty w Excelu to liczby całkowite, reprezentujące kolejne dni od określonej daty początkowej (w systemie Windows standardowo 1.01.1900). Czas to ułamek doby. Dla użytkownika widoczny jest format daty i godziny, ale funkcje takie jak ŚREDNIA.WARUNKÓW pracują na wartościach liczbowych. Skutek jest dwojaki:

  • porównania typu „>=”&DATA(2024;1;1) działają przewidywalnie – Excel porównuje liczby,
  • porównanie z tekstem wyglądającym jak data (np. „2024-01-01”) jest ryzykowne, bo może być interpretowane różnie zależnie od ustawień regionalnych.

Bezpieczniej jest budować kryteria datowe na liczbach lub funkcjach DATA(), DZIEŃ(), MIESIĄC(), ROK(), niż na gołych łańcuchach tekstowych. Z poziomu użytkowego oznacza to jedno: filtr „od–do” dla dat powinien opierać się na liczbach, nie na opisach w stylu „styczeń 2024”.

Przedziały dat: od – do bez luk i nakładek

ŚREDNIA.WARUNKÓW nie ma jednego parametru „zakres dat”, więc aby zbudować przedział, trzeba wykorzystać dwa kryteria na tym samym zakresie dat. Przykład dla średniej sprzedaży w I kwartale 2024 roku (daty w kolumnie B, wartości w kolumnie C):

=ŚREDNIA.WARUNKÓW(C2:C1000; B2:B1000; „>=”&DATA(2024;1;1); B2:B1000; „<=”&DATA(2024;3;31))

Ten zapis obejmie wszystkie dni od 1 stycznia do 31 marca włącznie. Gdy firma stosuje niestandardowe okresy rozliczeniowe (np. tygodnie lub „miesiące handlowe” od 26 dnia do 25 dnia kolejnego miesiąca), przedział należy dopasować do takich granic. Przekłada się to na konkretną parę kryteriów, a luki lub nakładki między okresami będą po prostu odzwierciedleniem przyjętej definicji w danych wejściowych.

Tekstowe kryteria z operatorami porównania

Operatory porównania (>, <, >=, <=, <>) w argumentach funkcji są interpretowane wyłącznie jako elementy tekstu. Mechanizm jest taki sam dla liczb i dat:

Łączenie operatorów z odwołaniami do komórek

Operatory same w sobie są tylko fragmentem tekstu. Dopiero połączenie ich z liczbą, datą lub odwołaniem do komórki tworzy użyteczne kryterium. Technicznie Excel widzi to tak:

  • „>1000” – stała tekstowa, porównanie do liczby 1000,
  • „>”&A1 – ciąg złożony z operatora i wartości z komórki A1,
  • „<=”&DATA(2024;12;31) – operator połączony z numerem daty zwracanym przez funkcję DATA().

Średnia z warunkiem zwykle korzysta z drugiego lub trzeciego wariantu. Przykład dla średniej wartości faktur większych niż limit z komórki F1:

=ŚREDNIA.WARUNKÓW(D2:D2000; D2:D2000; „>”&F1)

Co wiemy? Excel za każdym razem, gdy zmieni się F1, przelicza próg w kryterium, bo całe wyrażenie „>”&F1 jest interpretowane na nowo. Czego nie wiemy bez sprawdzenia? Czy F1 jest na pewno liczbą, czy może tekstem wyglądającym jak liczba. Jeśli F1 zawiera tekst „1 000” z odstępem tysięcznym wprowadzonym spacją, Excel może nie porównać go poprawnie.

Najczęstsze błędy przy operatorach w cudzysłowie

Kilka powtarzalnych scenariuszy w raportach firmowych:

  • brak cudzysłowów wokół operatora, np. >1000 zamiast „>1000”,
  • podwójne cudzysłowy skutkujące innym wyrażeniem niż zakładane,
  • łączenie tekstu z tekstem, gdy oczekiwane jest porównanie liczbowe.

Przykład błędnego zapisu:

=ŚREDNIA.WARUNKÓW(C2:C100; C2:C100; >1000)

W tej formie operator bez cudzysłowów jest dla Excela niepoprawny składniowo – formuła zakończy się błędem jeszcze przed uruchomieniem obliczeń. Drugi, mniej oczywisty przypadek: formuła formalnie poprawna, ale logicznie chybiona.

Jeżeli w komórce G1 znajduje się tekst „>1000” i pojawia się zapis:

=ŚREDNIA.WARUNKÓW(C2:C100; C2:C100; G1)

to porównanie będzie działało, choć wyrażenie jest mniej czytelne. Gorzej, gdy w G1 jest sama liczba 1000, a autor formuły oczekuje, że wpisanie „>” obok tej liczby w sąsiedniej komórce „magicznie” rozszerzy kryterium. Excel nie buduje takich kombinacji automatycznie – operator musi być częścią argumentu funkcji.

Bezpieczny, powtarzalny wzór dla operatorów z odwołaniami to:

  • „>”&komórka_z_wartością,
  • „<=”&DATA(rok;miesiąc;dzień),
  • „>”&TEKST(komórka_z_datą;”rrrr-mm-dd”) – tylko gdy pracujemy konsekwentnie na wartościach tekstowych.

Gdy liczba jest tekstem – kryteria, które „nic nie znajdują”

W arkuszach importowanych z systemów zewnętrznych część pól liczbowych potrafi być przechowywana jako tekst. Objaw powierzchowny: wyrównanie do lewej, brak możliwości prostego zliczania w kolumnie, komunikaty o „liczbie zapisywanej jako tekst”. Dla ŚREDNIA.WARUNKÓW to zupełnie inny świat.

Jeżeli zakres_średniej zawiera liczby, ale zakres_kryteriów – ich tekstowe odpowiedniki, porównania z operatorami liczbowymi nie zadziałają. Przykład:

=ŚREDNIA.WARUNKÓW(D2:D500; C2:C500; „>1000”)

gdy C2:C500 to teksty „950”, „1200”, „3000”, funkcja nie zwróci oczekiwanego wyniku, bo łańcuch „1200” nie jest traktowany jako liczba 1200. Z perspektywy Excela porównywane są ciągi tekstowe, a nie wartości liczbowe.

Rozwiązania są dwa:

  • przed liczeniem średniej skonwertować kolumnę C do prawdziwych liczb (np. przez MNOŻENIE przez 1, funkcję WARTOŚĆ() albo transformację w Power Query),
  • przyjąć, że porównujemy teksty i wymusić stały format długości (np. z wiodącymi zerami) – to jednak działanie awaryjne, typowe dla kodów, a nie kwot.

Kryteria złożone na tekście – kiedy alfabetyka zaczyna przeszkadzać

Porównania tekstowe z operatorami typu „>” czy „<” działają w porządku alfabetycznym, nie liczbowym. Skutki widać przy kodach mieszanych: „A10” jest „mniejsze” niż „A2”, bo porównanie przebiega znak po znaku: A = A, 1 < 2, a dalsze cyfry nie są już istotne.

Jeśli średnia ma obejmować np. tylko klasy produktów „powyżej” kodu B50, a kody są tekstowe, operator „>” będzie kierował się kolejnością sortowania tekstów. Niekoniecznie jest to równoznaczne z kolejnością biznesową przyjętą w organizacji. Zanim wprowadzi się takie kryteria do kluczowego raportu, trzeba znać wewnętrzną logikę kodowania.

Jednym z obejść jest wyodrębnienie fragmentu kodu (np. części numerycznej) do osobnej kolumny i stosowanie kryteriów liczbowych. ŚREDNIA.WARUNKÓW może wtedy korzystać z zakresu_kryteriów opartego na tej kolumnie pomocniczej, a nie na samym kodzie.

Średnia z warunkami a puste komórki i zera

ŚREDNIA.WARUNKÓW ignoruje puste komórki w zakresie_średniej, ale wlicza zera jako poprawne wartości. To drobna, lecz istotna różnica – w praktyce „brak danych” i „wynik równy zero” to często odrębne sytuacje biznesowe.

Co wiemy? Jeżeli zakres_średniej zawiera prawdziwe puste komórki, nie obniżają one średniej. Czego nie wiemy bez analizy danych? Czy „puste” po stronie źródła to rzeczywiście brak wartości, czy może zero wpisywane przez system domyślnie.

Dla sytuacji, w których zero ma być traktowane jako brak danych, stosuje się dodatkowe kryterium, np.:

=ŚREDNIA.WARUNKÓW(D2:D500; D2:D500; „<>0”; C2:C500; „Sprzedaż”)

Ten zapis uwzględnia tylko te wiersze, gdzie w D2:D500 występują wartości różne od zera, a jednocześnie w C2:C500 znajduje się tekst „Sprzedaż”. Próg zero jest tu arbitralny; przy danych finansowych częściej pojawia się warunek typu „>0” lub „>=min_progu”.

Interpretacja pustych w zakresie_kryteriów

Inny aspekt to puste komórki w zakresach_kryteriów. Dla ŚREDNIA.WARUNKÓW warunek typu „„=”” (lub ekwiwalent „„”„) oznacza „puste” – co w praktyce obejmuje prawdziwe pustki, ale już nie teksty składające się z samych spacji.

Przykład dla średniej czasu reakcji tylko dla zgłoszeń bez przypisanego konsultanta (kolumna B):

=ŚREDNIA.WARUNKÓW(C2:C1000; B2:B1000; „”)

Jeżeli jednak w kolumnie B zdarzają się wpisy wyglądające na puste, ale zawierające spację lub inny niewidoczny znak, formuła ich nie wyłapie. Z perspektywy Excela nie są to komórki puste. W takim przypadku konieczne jest wcześniejsze „oczyszczenie” kolumny B, albo bardziej skomplikowane kryterium z wykorzystaniem kolumny pomocniczej, która np. sprawdza długość oczyszczonego tekstu.

ŚREDNIA.WARUNKÓW z kryteriami dynamicznymi – zależnymi od daty bieżącej

Raporty okresowe korzystają często z bieżącej daty systemowej. Funkcje ŚREDNIA.WARUNKÓW można sprzęgnąć z funkcjami DZISIAJ(), TERAZ() czy KONIEC.MIESIĄCA(), budując kryteria „ruchome” w czasie.

Średnia sprzedaży z ostatnich 30 dni (daty w kolumnie B, wartości w kolumnie C):

=ŚREDNIA.WARUNKÓW(C2:C10000; B2:B10000; „>”&(DZISIAJ()-30); B2:B10000; „<=”&DZISIAJ())

Funkcja DZISIAJ() zwraca liczbę (datę), więc połączenie jej z operatorami jest bezpieczne. Należy tylko pamiętać, że Excel przelicza tę funkcję przy każdym odświeżeniu, więc w arkuszu udostępnianym wielu osobom „ostatnie 30 dni” może oznaczać różne zakresy w zależności od dnia otwarcia pliku.

Analogicznie konstruuje się okresy miesięczne lub kwartalne, bazując na KONIEC.MIESIĄCA() albo na wyliczonych datach granicznych. Sam mechanizm ŚREDNIA.WARUNKÓW się nie zmienia – wciąż korzysta z par zakres–kryterium, ale kryteria dostaje w postaci formuł zamiast stałych.

Kryteria mieszane: tekstowe etykiety i numeryczne progi w jednej formule

W raportach menedżerskich typowe jest zestawienie filtrów jakościowych i ilościowych. Przykładowa formuła, która liczy średnią marżę dla produktów kategorii „A” i „B” powyżej określonej ceny minimalnej z komórki F1:

=ŚREDNIA.WARUNKÓW(E2:E5000; C2:C5000; „A”; C2:C5000; „B”; D2:D5000; „>”&F1)

Taki zapis nie zadziała zgodnie z intuicją, bo ŚREDNIA.WARUNKÓW interpretuje warunki w logice AND, a nie OR. W praktyce więc funkcja szuka wierszy, gdzie jednocześnie C2:C5000 = „A” i C2:C5000 = „B” – a takich po prostu nie ma.

Aby osiągnąć efekt „kategoria A lub B”, trzeba albo przebudować dane (np. sprowadzić obie kategorie do wspólnej etykiety w kolumnie pomocniczej), albo skorzystać z funkcji SUMA.WARUNKÓW i LICZ.WARUNKÓW z operatorem OR implementowanym inaczej (np. przez sumę dwóch formuł, po jednej na każdą kategorię). ŚREDNIA.WARUNKÓW sama z siebie nie oferuje spójnika OR między parami zakres–kryterium.

ŚREDNIA.WARUNKÓW a filtrowanie tabel – dwa różne etapy pracy

Stosunkowo częste nieporozumienie dotyczy połączenia filtrów z poziomu interfejsu (filtr w tabeli, segmenty w tabeli przestawnej) z filtrami wewnątrz ŚREDNIA.WARUNKÓW. Użytkownik widzi tylko widoczne wiersze i zakłada, że formuła również je „widzi”. Tymczasem funkcja przegląda zakresy niezależnie od filtrów w standardowych zakresach komórek.

Jeśli kolumna D ma ręczny filtr, a formuła wygląda tak:

=ŚREDNIA.WARUNKÓW(E2:E500; C2:C500; „Księgowość”)

to średnia obejmuje wszystkie wiersze spełniające warunek w C2:C500, także te aktualnie ukryte przez filtr. Aby ograniczyć się wyłącznie do wierszy widocznych, trzeba sięgnąć po kombinację z funkcjami PODAJ.POZYCJĘ/FILTR lub użyć formuły tablicowej ze specjalnymi funkcjami (np. PODAJ.WARTOŚĆ w połączeniu z AGREGUJ). Sama ŚREDNIA.WARUNKÓW nie „rozumie” filtrowania interfejsowego.

Inaczej działa to w tabelach przestawnych. Tam średnia z warunkami nie jest wyliczana przez ŚREDNIA.WARUNKÓW, lecz przez silnik tabeli przestawnej, który operuje na już przefiltrowanym zbiorze. Jeżeli więc ktoś ręcznie porównuje wyniki ŚREDNIA.WARUNKÓW z liczbami z tabeli przestawnej, musi brać pod uwagę, że te dwa narzędzia mogą liczyć średnią na innym zestawie rekordów.

ŚREDNIA.WARUNKÓW w połączeniu z nazwanymi zakresami i tabelami

Przy rozwijających się raportach arkusze szybko rosną w głąb i w dół. Stałe adresy typu C2:C10000 przestają być wygodne w utrzymaniu. W tej sytuacji kryteria w ŚREDNIA.WARUNKÓW stają się czytelniejsze, gdy zamiast surowych adresów używa się nazwanych zakresów lub odwołań strukturalnych do tabel Excela.

Przykład z nazwanym zakresem Kwoty dla kolumny z wartościami i DatySprzedaży dla kolumny z datami:

=ŚREDNIA.WARUNKÓW(Kwoty; DatySprzedaży; „>=”&DATA(2024;1;1); DatySprzedaży; „<„&DATA(2024;2;1))

Taki zapis łatwiej skontrolować – w razie niespójnego wyniku można wrócić do Menedżera nazw i sprawdzić, który obszar obejmuje konkretny zakres. Technicznie działanie funkcji pozostaje identyczne jak przy tradycyjnych adresach komórkowych.

Odwołania strukturalne w tabelach działają podobnie. Formuła:

=ŚREDNIA.WARUNKÓW(Tabela1[Kwota]; Tabela1[Region]; „Północ”; Tabela1[Status]; „Zamknięte”)

dopasowuje się automatycznie do rozrastającej się tabeli. Pułapka jest jedna: po zmianie nazw kolumn (nagłówków) w tabeli, formuły z odwołaniami strukturalnymi również ulegają zmianie. Przy większej liczbie zagnieżdżonych formuł łatwo stracić orientację, jakie dokładnie kryteria były pierwotnie stosowane.

Poprzedni artykułPrzestawianie tabel bez makr: WYBIERZ.KOLUMNY i WYBIERZ.WIERSZE w dynamicznych tablicach
Tomasz Zieliński
Tomasz Zieliński specjalizuje się w analizie danych w Excelu: tabelach przestawnych, Power Query i budowie czytelnych raportów. Na blogu przekłada złożone zagadnienia na praktyczne procedury, które da się wdrożyć od razu w firmie. Pracuje metodycznie: najpierw definiuje cel, potem dobiera narzędzia i sprawdza rozwiązanie na danych z błędami, brakami i duplikatami. W tekstach dba o precyzję nazw, zgodność z aktualnymi wersjami Excela oraz o to, by wskazówki były bezpieczne dla plików współdzielonych.