OpenOfficeで拘束時間を求める

拘束時間、何時何分に出社して、何時何分に退社したか、ということに基づいて、退社時間から出社時間を引いた時間を拘束時間として考えたいと思います。

これは、時間を扱う関数を使います。
関数名:TIME関数
書式:=TIME(時;分;秒)
何ができる:時刻に対応するシリアル値が返される。

たとえば、
9:54に出社して、15:12に退社した場合の拘束時間は15:12から9:54を引けば得られます。
そのために、TIME関数を用いて次のような処理を行ないます。
=TIME(15-9;12-54;00) で、5:18が得られ拘束時間が5時間18分だとわかります。

そのために、入力されている時刻から時や、分に当たるデータを得なければいけません。
そこで下の三つの関数を使います。

関数名:HOUR関数
書式:=HOUR(時刻)
何ができる:時刻から時を求める。
平たく書くと:=HOUR(15-9)

関数名:MINUTE関数
書式:=MINUTE(時刻)
何ができる:時刻から分を求める。
平たく書くと:=MINUTE(12-54)

関数名:SECOND関数
書式:=SECOND(時刻)
何ができる:時刻から秒を求める。
平たく書くと:=SECOND(0)
上の三つの関数をそのまま、TIME関数にあてはめると=TIME(HOUR(15-9);MINUTE(12-54);SECOND(0))

ただ、通常は、セルにあらかじめ出勤時刻と退社時刻が入力されているでしょうから、そのセルの値を活用して計算することになります。
ここで、さきほどの出社時刻9:54がB2セル、退社時刻15:12がD2セルに入力されているとして、
=TIME(HOUR(D2)-HOUR(B2);MINUTE(D2)-MINUTE(B2);SECOND(0))で5時間18分が得られます。

ただ、このままでは、ひとつ問題があります。
それは、出社時刻よりも退社時刻のほうが値が小さい場合です。
具体的には、23時33分に出社して翌日の朝4時55分に退社した場合、上の計算式をそのまま当てはめると-18:21:00になってしまいます。
これは、いかにも奇怪なことで給与計算のとき、従業員からお金をもらわないとならないのかということになります。
正しい値は5時間39分なので、この値を得るためにどうするかを紹介します。
=TIME(HOUR(D2)-HOUR(B2)+IF(HOUR(D2)-HOUR(B2)<=0;24;0);MINUTE(D2)-MINUTE(B2);0)
23時から4時を引いた値がゼロ以下のとき、24を加えることで、問題を解決できます。
OpenOfficeで拘束時間を求めるサンプルファイルは、calc031.odsをダウンロードしてください。

送信者 OpenOffice