図は簡単な時給計算表だ。毎日の勤務時間を「退社時間-出社時間」で求めている。勤務時間の合計はSUM関数を使った。考え方に間違いはないが、合計勤務時間がおかしい。これだけ働いたのに「3:05」とは、あんまりだ。これは、セルに標準で設定されている表示形式が、24時間を超える時間を表示しないようになっているからだ。

図1 勤務時間の合計をSUM関数で求めたら、正しい結果が得られない
図1 勤務時間の合計をSUM関数で求めたら、正しい結果が得られない

 こんなときは、セルの表示形式を設定しよう。時間の合計を表示するセルを選択して「セルの書式設定」ダイアログボックスを開く。「表示形式」タブの「分類」リストで「ユーザー定義」を選択し、右の「種類」ボックスに「[h]:mm」と入力しよう。「[h]」のように時間を表す書式記号を角括弧で囲むと、24時間を超える時間を表示できる。

図2 セルの書式設定で、24時間を超える時間が表示されるように表示形式を設定する
図2 セルの書式設定で、24時間を超える時間が表示されるように表示形式を設定する

図3 正しい勤務時間合計が表示されるようになった
図3 正しい勤務時間合計が表示されるようになった

 では次に、勤務時間合計に時給を掛け算してみよう。ここでは時給を800円とした。ところが計算結果は「1702.778」と、約1700円にしかならない。これはいったい、どうしたことだろう。

図4 勤務時間合計に時給を掛け算すると、変な計算結果が表示されてしまう
図4 勤務時間合計に時給を掛け算すると、変な計算結果が表示されてしまう

 これはExcelが日付や時間を管理するシリアル値が原因だ。Excelは内部で、1日を1として計算している。1日が1なのだから、1時間は1/24となる。51時間なら「51×(1/24)」で2.125にしかならない。これに数値の800を乗じたのだから、望む結果になるはずがない。ここでは「51:05」という"時間"を"数値"に変換しなければならない。さらに、端数の「5分」をどう扱うかも考慮する必要がある。ここでは、端数は「1時間単位に切り上げ」るものとする。

 まず端数を切り上げる方法から。これにはCEILING関数が便利だ。CEILING関数は、任意の数値を指定した基準ごとに丸める働きをする関数だ。ここでは、勤務時間(セルD8)を"1時間"で丸めるので「CEILING(D8,"1:00")」という式になる。次に、CEILING関数で求めた「52:00」という時間を「52」という数値に変換しよう。これは、時間を「"1:00"」で割ってやればいい。合わせると「CEILING(D8,"1:00")/"1:00"」となる。これで「52」という数値が得られたので、時給の800を掛け算すれば、無事に給料が求まる

図5 端数の分を時間単位に丸めるにはCEILING関数が便利。これなら「30分単位」なども計算できる。端数を切り捨てるのならFLOOR関数を使おう。丸めた時間を数値に変換するには、時間を
図5 端数の分を時間単位に丸めるにはCEILING関数が便利。これなら「30分単位」なども計算できる。端数を切り捨てるのならFLOOR関数を使おう。丸めた時間を数値に変換するには、時間を"1:00"で割ればいい。最後に時給を掛け算すれば完成だ