Už se to tu ve fóru probíralo několikrát - Calc ukládá čas (a datum) do buněk jako číslo ve dnech od určitého počátečního dne. Takže když od sebe dva časy odečtete, výsledkem je číslo ve dnech a s tím se taky musí počítat ve vzorcích, pokud nepoužijete zmíněné funkce pro převod na hodiny a minuty. Můžete si stáhnout příklad:
http://ooo.e-hanus.cz/cas.ods
Do sloupce A se zadává příchod, do sl.B odchod. Ve sl. C je prostý rozdíl B-A. Jakmile mají všecny tři buňky formát času HH:MM, tak se nemusí nic přepočítávat, není co řešit. Problém trošku nastává s tou podmínkou, že pokud je rozdíl časů větší než 6 resp. 12 hodin, odečte se půl resp. hodina. To dělá sloupeček D pomocí vzorce
=IF(C2>12/24;C2-1/24;IF(C2>6/24;C2-1/48;C2))
vysvětlení:
jak jsem říkal, datum/čas v buňkách je číslo ve dnech, takže 12/24 je 12 hodin, 1/24 je jedna hodina, 6/24 je 6 hodin, 1/48 je půl hodiny; popis vzorce je tedy:
když je rozdíl víc než 12 hodin, odečti od rozdílu 1 hodinu; jinak když je rozdíl víc než 6 hodin, odečti půl hodiny; jinak nech původní rozdíl.
Tento přístup pomocí podmínek má nevýhodu v tom, že musíte ošetřit všechny typy rozdílů. Matematicky obecnější je použít vzorec
=C2-TRUNC((C2-1/(24*60))/(6/24))*(1/48)
který za každých ukončených 6h odečte půlhodinu. To zmenšení C2 o 1/(24*60) tedy o 1 minutu je tam proto, aby při rozdílu rovných 6:00 hodin se ta půlhodina ještě neodečetla, ale až při rozdílu 6:01 - koukám, že někdy není dobré zůstat v práci ani o minutu déle :-)
Tohle je ale asi jen teoreticky lepší řešení, nevím, jak je to v praxi dle zákoníku práce :-)
Editoval hanus (7. 9. 2009 22:09:59)