Ten temat chodzi za mną już od jakiegoś czasu. Wiem, że za wami też, bo pytacie mnie o to
A sprawa jest taka: jak policzyć sumę, aby wyświetlała prawidłową wartość, jeśli w sumowanym zakresie są błędy?
Często zdarza się, że zakres, który chcemy zsumować, zawiera inne formuły. Często formuły te zwracają błędy. Niestety jeśli w sumowanym zakresie funkcja SUMA napotka błąd – zwróci ten sam błąd. Np:
Funkcja SUMA zwraca błąd (#N/D), ponieważ jedna z sumowanych komórek zwraca ten błąd. Zwróćcie uwagę, że w tabeli z kursami walut na obrazku nie ma dolara australijskiego (AUD). Ja natomiast chciałabym, żeby funkcja SUMA sumowała wszystko to, co potrafi i wyświetlała wynik. Czyli w tym wypadku wszystko oprócz tej błędnej wartości. W tym celu należy użyć formuły tablicowej…
W idealnym scenariuszu (a taki właśnie piszemy ), chcemy, aby formuła sprawdziła czy każda komórka w zakresie zawiera błąd. Jeśli tak – ma dodawać zero, jeśli nie – ma dodawać tę wartość. Przedstawię to rozumowanie na schemacie:
Ponieważ ma to być obliczone w jednej formule, należy tutaj posłużyć się formułą tablicową. Łatwą na szczęście
Kilka słów o formułach tablicowych…
No właśnie… Co to są te formuły tablicowe? Tak w uproszczeniu można powiedzieć, że robią one w jednej formule coś, co normalnie trzeba byłoby rozpisywać na kilka kolumn z formułami.
W naszym przykładzie moglibyśmy dopisać drugą kolumnę, w której sprawdzilibyśmy, czy funkcja SUMA zwraca błąd. Jeśli tak – zwrócilibyśmy zero, jeśli nie – wartość komórki. Na koniec oczywiście podsumowalibyśmy tę kolumnę już zwykłą funkcją SUMA. I zrobione. Z praktycznego punktu widzenia, ta kolumna pośrednicząca nic nie wnosi do naszej tabeli. Należy więc szukać takiego rozwiązania, by jej nie użyć.
A od strony technicznej warto wiedzieć, że formuły tablicowe zatwierdzamy kombinacją klawiszy Ctrl + Shift + Enter (nie mylić z Ctrl + Enter!). Dzięki temu Excel wie, że wpisaną formułę ma traktować „specjalnie” Na dowód tego ujmuje ją w nawiasy klamrowe: { = … }. Nawiasy te pojawią się TYLKO wtedy, gdy zatwierdzimy formułę podanymi klawiszami. Próba wstawienia ich ręcznie – nie zadziała.
Magiczna formuła
No właśnie. Jaka więc będzie nasza formuła? Taka:
=SUMA(JEŻELI.BŁĄD(C8:C12;0))
Oczywiście zatwierdźcie ją Ctrl + Shift + Enter. Wtedy pojawią się nawiasy klamrowe otaczające formułę:
Formuła zaczyna liczenie od środka (to akurat normalne działanie ). Najpierw sprawdza czy wartość w każdej kolejnej komórce zakresu C8:C12 jest błędem (funkcje JEŻELI.BŁĄD) i jeśli tak – zamiast jej wartości „zapamiętuje”, że ma dodać (funkcja SUMA) zero. Jeśli nie ma błędu – ma dodać wartość komórki.
Używam określenia „zapamiętuje”, ale w rzeczywistości Excel tworzy sobie w pamięci tablicę (czy inaczej po prostu: zakres), do której wpisuje wyniki funkcji JEŻELI.BŁĄD dla każdej komórki zakresu. Robi w pamięci to, co my moglibyśmy zrobić korzystając z kolumny pomocniczej. Na koniec wyniki są sumowane funkcją SUMA, która sama z siebie operuje na tablicach (zakresach).
Po wprowadzeniu tej formuły, suma zostanie policzona już prawidłowo. Jak na obrazku:
I tyle! Łatwe? Mam nadzieję, że tak
Tak sobie myślę, że możecie zapytać jeszcze, czemu formuła licząca cenę w PLN nie zabezpiecza się przed błędem? Można przecież tę formułę objąć funkcją JEŻELI.BŁĄD, która zadziała tak samo, jak w formule tablicowej: zawróci dobrą wartość lub zero, w przypadku błędu. Czyli może to wyglądać następująco:
=JEŻELI.BŁĄD(ZAOKR(B8*WYSZUKAJ.PIONOWO(A8;$B$2:$C$4;2;0);2);0)
Wynik wyszedłby ten sam. Jednak znaczenie byłoby – moim zdaniem – inne. Nie jest prawdą bowiem, że cena 58 AUD jest równe 0 PLN. W takim przypadku wolę już zwrócić błąd (#N/D) niż błędną wartość. Oczywiście ostateczna decyzja należy do was.
Co o tym myślicie? Przyda się? Dajcie znać w komentarzach.