Odečítání času v Excelu pro výkaz práce

V práci jsem aktuálně řešila problém s výkazem odpracovaných hodin pro home office. Oficiálně vygenerovaný výpis totiž zapomněl odečíst půl hodiny pauzy na oběd. Jenže jak odečíst tu půlhodinu? Jak se ve vzorci dá odečíst čas?

Začnu od vzorce jako takového. První sloupec byl den, kdy se pracovalo, s tím se v tomto případě nijak nepočítá. A ještě raději podotknu, že u nás je skutečně nejvíce zastoupena ne klasicky osmihodinová, ale 7,5 hodinová směna (7,5 hodiny + 0,5 hodiny na oběd).

Další sloupec je práce “od kolika hodin” a následuje sloupec “do kolika hodin”, a protože může nastat situace, kdy má někdo třeba noční směnu, tak i s tím bylo ve vzorci počítáno, a bylo proto použito podmínkové funkce KDYŽ… Tudíž když neplatí, že čas v druhé buňce je vyšší než v první, platí výpočet na druhém místě podmínky, jinak při běžné směně se pouze podle prvního místa podmínky odečtou hodnoty buněk od a do, a jejich rozdílem je počet odpracovaných hodin. Ovšem pozor, tento počet je právě bez té zmíněné půl hodiny na oběd, což je pro konečnou sumarizaci výkazu a počet skutečně odpracovaných hodin důležité.

Celá podmínková funkce s KDYŽ byla navíc zakomponována do funkce MOD, v jejímž rámci se dělí jedničkou. Asi to má pro výkaz svoje opodstatnění, které jsem momentáně nepitvala, ale věřím tomu. Vyměňte mi můj nedokonalý mozek za “matematický a logický” a asi na to kápnu. 🙂 Každopádně funkce MOD vrací zbytek po dělení jednoho čísla druhým. Výsledek má stejné znaménko jako dělitel. Viz níže.

 

Vzorec Popis Výsledek
=MOD(3;2)

Zbytek podílu 3/2

1
=MOD(-3;2) Zbytek po dělení -3/2. Znaménko výsledku je stejné jako znaménko dělitele.

1

=MOD(3;-2) Zbytek po dělení 3/-2. Znaménko výsledku je stejné jako znaménko dělitele.

-1

=MOD(-3;-2) Zbytek po dělení -3/-2. Znaménko výsledku je stejné jako znaménko dělitele. -1

 

A dostanu se k vlastnímu vzorci, který jsem upravila, aby uměl za naplnění podmínky nejenom odečíst časové hodnoty, ale v případě denní směny (noční u nás řešit nemusím a bylo by to asi komplikovanější, do druhého místa podmínky jsem tedy nezasahovala) odečetl i zmíněnou půlhodinu, vzorec vycházející ze screenu viz níže, vypadá takto:

=MOD(KDYŽ(D9>C9;D9-C9-ČASHODN(“00:30”);D9+(24-C9));1)

Úsek, který jsem přidávala, byl -ČASHODN(“00:30”), tj. takto lze ve vzorci použít k odečtu půlhodinu. Samozřejmě by šlo tento časový údaj dát třeba do dalšího sloupečku, kde by byla v každé buňce přestávka 00:30, a pak ve vzorci odečíst tuto buňku, ale jelikož bych ten sloupec musela skrýt, anebo prostě mi to pro tento případ přišlo jako menší zásah do struktury výkazu, volila jsem úpravu, viz níže:

=MOD(KDYŽ(D9>C9;D9-C9-ČASHODN(“00:30”);D9+(24-C9));1)

 

 

=MOD(KDYŽ(D9>C9;D9-C9-ČASHODN(“00:30”);D9+(24-C9));1)