Czyli coś trudnego prostymi funkcjami…
Ogólnie sytuacja wydaje się prosta – mamy dany czas pracy pracownika w poszczególnych dniach i chcemy poznać jego łączny czas pracy w danym okresie. Problem jest jednak w tym, że ten czas pracy podany jest za pomocą symboli, a nie liczb. Np. UW to Urlop wychowawczy, który dla obliczeń bierze 8 godzin. Tych oznaczeń jest więcej i są one widoczne w tabelce po prawej stronie formatki:
Oczywiście w żółtych polach chcemy uzyskać sumę łączny czas pracy danego pracownika. Gdybyśmy chcieli/mogli mieć tabele pomocniczą – zadanie byłoby wręcz banalne! Natomiast nie mamy takiej tabeli, więc trzeba kombinować formułą tablicową. I o niej dalej.
Gdybyśmy mieli tylko jeden symbol do znalezienia, np. CD – formuła byłaby bardzo prosta. Można byłoby się posłużyć tutaj np. SUMĄ.JEŻELI, WYSZUKAJ.PIONOWO czy jeszcze kilkoma innymi funkcjami. Wtedy kazalibyśmy funkcji, np. SUMIE.JEŻELI, szukać symbolu CD w zakresie z symbolami (N4:N9) i na tej podstawie sumować liczbę godzin (O4:O9).
Formuła wyglądałaby tak:
=SUMA.JEŻELI($N$4:$N$9;C4;$O$4:$O$9)
I byłoby po sprawie.
Natomiast do poszukania mamy zdecydowanie więcej symboli. Jest więc to pole do popisu dla formuły tablicowej. Nadal będziemy używać w niej SUMY.JEŻELI (oczywiście jak chcesz – możesz użyć SUMY.WARUNKÓW), natomiast każemy jej znaleźć wszystkie symbole dla danego pracownika, czyli tak:
=SUMA.JEŻELI($N$4:$N$9;C4:K4;$O$4:$O$9)
Problem jest jednak taki, że jak taką formułę zatwierdzimy – otrzymamy w wyniku zero. SUMA.JEŻELI bowiem zwróci w wyniku tablicę wartości, która nie mieści się w jednej komórce (nie możemy przechowywać wielu komórek w jednej komórce – to potrafi Power Query ;)). Tak wygląda wynik powyższej funkcji (będąc w edycji formuły – wciśnij F9, aby się o tym przekonać):
={24\12\12\0\8\8\12\8\12}
Nawiasy klamrowe naokoło wyników oznaczają, że jest to tablica wartości. I co ciekawe – te wartości są prawidłowymi wynikami! SUMA.JEŻELI wywiązała się z zadania.
Tylko trzeba byłoby to teraz jeszcze podsumować… Potrzebna nam jest więc funkcja sumująca. No wow, wielkie odkrycie: SUMA oczywiście! I tak, SUMA oczywiście zda tutaj egzamin (umie w końcu sumować ;)). Natomiast jeśli jej użyjemy, koniecznie musimy zatwierdzić całą formułę kombinacją klawiszy Ctrl + Shift + Enter (w skrócie: CSE). Efekt będzie taki, że naokoło formuły pojawią się nawiasy klamrowe, wstawiane automatycznie przez Excela (nie kopiuj ich z formuły poniżej!):
{=SUMA(SUMA.JEŻELI($N$4:$N$9;C4:K4;$O$4:$O$9))}
CSE oczywiście zadziała, wynik wyjdzie prawidłowy. Problem jednak jest taki, że o CSE często się zapomina (patrz: ja ;)), no i nie da się wtedy skorzystać z mojego ukochanego Ctrl + Enter, tylko trzeba kopiować przeciąganiem, albo Ctrl + c i Ctrl + v.
Żeby jednak tego uniknąć, wystarczy zastosować inną funkcję sumującą. A jest nią SUMA.ILOCZYNÓW, o której już wielokrotnie wspominałam na blogu (np. tutaj) :). Ta funkcja sumuje (w tym wypadku identycznie jak SUMA) i umie radzić sobie z tablicami i to bez CSE! Dlatego, jak masz coś do dodania w formule tablicowej – zdecydowanie polecam Ci SUMĘ.ILOCZYNÓW:
=SUMA.ILOCZYNÓW(SUMA.JEŻELI($N$4:$N$9;C4:K4;$O$4:$O$9))
Wynik oczywiście dostaniemy ten sam, tylko bez CSE, no i możesz skopiować formułę Ctrl + Enter 😉
Proste? Mam nadzieję :).
Tutaj możesz pobrać plik z gotowym rozwiązaniem:
MalinowyExcel Suma czasu pracy formułą tablicową dw.xlsx
A tutaj wersja wideo:
A jeśli temat formuł tablicowych Cię interesuje, to bardzo serdecznie Ci polecam serię filmów Mike’a Girvina na ten temat. Mike napisał też książkę o formułach tablicowych, dostępna jest po angielsku.
Można też po prostu:
=SUMA(JEŻELI($N$3:$N$8=C4:K4;$O$3:$O$8))
(i oczywiście CSE na zatwierdzenie formuły)
Super, czyli nawet jeszcze prostszymi funkcjami się da :). Dziękuję za podzielenie się!
Witam. A jest jakaś szansa by sobie poradzić z tym?
https://www.elektroda.pl/rtvforum/topic3685449.html
Hej! Weszłam na link i wygląda na to, że tam rozwiązali problem?