人事や管理会計の実務では、Excelファイルを使って、就業時間管理や作業時間管理を行うことがあります。関数を使えば、作業開始時刻(始業時刻)と終了時刻(退社時刻)を入力しただけで、作業時間(就業時間)を計算させることも可能です。
時間の計算は、”シリアル値”を使います
Excelで行う時間の計算は、足し算、引き算の式で可能です。
たとえば、作業開始時刻が9時、作業終了時刻が17時30分だったとします。それぞれ、次のように、A2セル、B2セルに入力して、作業時間を計算するには、
このように引き算をすれば、OKです。
わざわざ難しい操作をする必要の無い、便利な機能ですが、ここで行われている計算の仕組みについては、簡単に知っておく必要があります。
「時刻も、足し算引き算できる」と覚えるだけでは、少し形が変わるだけで正しく計算できなくなってしまうからです。
時刻から時間を計算する仕組みは、「時刻のデータが何を意味しているか」が分かれば、理解することができます。
先ほど、「9:00」「17:30」と時刻を入力したセルに注目します。
この形で入力すると、表示形式が自動的に「時刻」や「ユーザー定義」になって、時刻のデータとして表示されるのですが、ここを「標準」にもどしてみます。
すると、
このように小数が表示されます。
これは、時刻の”シリアル値”というものです。
シリアル値は、数量限定のブランド品や、枚数を限定して刷った版画に割り振られる「シリアルナンバー」と同じで、
他と区別するために、1つの時刻に1つだけ割り振られる「通し番号」のことです。
先ほどの「17:30ー9:00」の引き算は、見た目では時刻同士の計算ですが、その実態は、それぞれの時刻に割り振られた、シリアル値の計算だったと言うことです。
つまり、
時刻の計算=”シリアル値(=小数)”の計算
ということです。
では、時刻のシリアル値がどのように決められているかですが、0時(深夜12時)を中心にして決められていて、
24時00分:1
これが基準です。
どのようにして決められているかというと、
24(時)÷ 24 =1
時間を24で割った結果の数値として決められています。
これは、「時間」を「日」に直すのに、「時間」を24で割るという計算を思い浮かべてもらえれば分かりやすいと思います。
(「36時間は、何日か」と言う問いに、「1.5日」と答えるような、計算を思い浮かべてみて下さい)
時刻のシリアル値は、
「1日」=「24時間」
を基準にして、その時間(時刻)は「何日分にあたるか」で決められているということです。
では、1時間後の、午前1時00分はどうなるかというと、
1(時)÷ 24 = 0.0416…
さらに1時間後の、午前2時00分は、
2(時)÷ 24 = 0.0833…
このようになります。
次は、「分」のシリアル値です。「時間」と同じように、
「1日」=「24時間」=「1440分(24×60)」
を基準として、その「分数」が「何日分にあたるか」の答えとして決められています。
「1分」についてみておくと
1(分) ÷ (24×60)= 0.0006944
こうなります。
「分」を「時間」に直すのに、60で割り、
「時間」を「日」に直すのに、24で割る、
といった計算をして、シリアル値が決まるのが分かります。
「秒」のシリアル値についても同じです。「時間」「分」と同じように、
「1日」=「24時間」=「1,440分(24×60)」=「86,400秒(24×60×60)」
を基準として、その「秒数」が「何日分にあたるか」の答えとして決められています。
「1秒」についてみておくと、
1(秒) ÷ (24×60×60)= 0.000011574
このようになります。
「秒」を「分」に直すのに、60で割り、
「分」を「時間」に直すのに、60で割り、
「時間」を「日」に直すのに、24で割る、
といった計算をして、シリアル値が決まるのが分かります。
「時間」「分」「秒」のシリアル値はこのようにして決まり、それを足し算したものが、その時刻のシリアル値ということになります。
たとえば、「1時1分1秒」のシリアル値の場合、
0.0416…(1(時)÷24)+0.0006944(1(分)÷(24×60))+0.000011574(1(秒)÷(24×60×60))=0.0423726
このように決まります。
こうして割り振られた、時刻のシリアル値によって、Excelに入力された時刻を使って、作業時間や、就業時間が計算できるのです。
では、実際に時刻が入力されたExcelファイルを使って、どのように作業時間や就業時間を求めるかを見ていきましょう。
TIME関数を使って、時刻のデータから時間を計算する
次のような作業時間管理ファイルを考えます。
「時間」と「分」を別のセルで入力する仕組みです。
これは、わざわざ入力方法を面倒にしているわけではなく、Excelの入力に不慣れな人が使っても、入力の方法と内容に、誤りがないように、ドロップダウンリストから選択する方法で入力できるようにしたためです。
(詳細については、こちらの記事で説明しています 参照:”ドロップダウンリストで、Excelが苦手な人にも正しく入力してもらえるようにしましょう
”)
先ほど見た時刻の計算では、このように、
一つのセルに時刻のデータを入力していたために、Excelの方で時刻のシリアル値に変換してくれて、引き算をすれば、作業時間をもとめることができました。
ところが、今回のように、「時間」と「分」が分かれて入力されていると、Excel側でもシリアル値へ変換してくれません。
なので、「時刻が入力されているセル同士で引き算」では時間の計算ができないのです。
そこで必要になるのが、時刻のデータをシリアル値に直してくれる関数。TIME関数です。
TIME関数 時刻のデータをシリアル値に変換する
TIME関数はシンプルな関数です。
①時間、②分、③秒、の3つの要素を入力すれば、時刻のシリアル値に変換してくれます。
たとえば、「1時1分1秒」をシリアル値にする場合、
=TIME(①1, ②1,③1)
このように入力すると、
シリアル値に変換してくれます。
これは、「年、月、日」のデータを入力すると、日付のシリアル値に変換してくれた、DATE関数と同じ機能と考えれば良いでしょう。
TIME関数を使って、時間を計算する
シリアル値にできれば、引き算で時間を計算することができます。
先ほどの「作業時間ファイル」に戻って、作業時間を計算してみます。
開始時間の”時間”が「C列」、”分”が「D列」
終了時間の”時間”が「E列」、”分”が「F列」
なので、TIME関数にセルを入力していきます。
10分単位で入力し、秒は考えないので、”秒”のところは「0」を入力します。すると、
正しく8時間40分(「8:40」)と計算されていることが分かります。
あとは、この式をコピーして行けば良いのですが、この式をそのままコピーしてしまうと、
誤って入力してしまった場合などに、エラー表示が出てきて、入力した人が混乱する可能性があります。
このようなトラブルを避けるために、「全てのセルが埋まらなければ、作業時間のセルを空白にする」設定にしておきます。
IF関数とAND関数で、エラーを防ぎます
IF関数は、等号(=)、不等号(<、>)を含む”条件式”を判定して、正しい場合と、誤っている場合の表示を指定することができる関数です。
たとえば、「1+1=3」という”条件式”を判定するとします。
正しい場合に「○」
誤っている場合に「×」
と表示させるとすると、
このような式になります。
条件式が複数の場合もあります。「10以上」かつ「30未満」のような場合です。
複数の条件式を両方とも満たすように設定するには、「AND関数」を使います。
たとえば、「A43セルが、10以上、かつ、30未満」が、条件式だとすると、
このように入力することになります。
これをIF関数の「①判定する条件式」の所に入力すると、
このようになり、その結果は、
正しく判定されました。
この2つの関数を使って、作業時間の計算セルを、
「全てのセルが埋まったら、時間を計算」
「1つでも埋まらないセルがあったら、空白セル」
という条件に合うようにして、エラーを防ぎます。
IF関数を入力する際は、いきなり式を書くのではなく、条件を日本語に直してから式にするのがポイントです。
今回のケースでは、時刻の入力セルが、「C列、D列、E列、F列」なので、
「C列、D列、E列、F列が空白でなかったら」
が条件式になります。
条件式で「〜でない」を意味するのは、「<>」です。
また、関数で空白を意味するのは、「””」(ダブルクォーテーション×2)
ですので、条件式は、
このようになります。
そして、
この場合には、入力が必要なセルに、漏れなく入力されているということなので、先ほど入力した、時間を求める式
の結果を表示させ、
条件式が正しくない場合は空白にします。
先述の通り、関数の中で空白は意味するのは「””」(ダブルクォーテーション×2)です。
以上をまとめると、
このような式になり、特定のセルにだけ数値が入力されたような場合でも、計算のセルは空白のまま。
全ての入力セルに、データが入力された場合にだけ、計算が行われることになります。
まとめ
Excelで作業時間や就業時間を計算するためには、時刻から時間を計算する仕組みを理解する必要があります。
「時刻のシリアル値」を知ることによって、Excel上での時間の計算を効率的に行うことができます。
<おまけ>
今週は、4月から始まった新番組を中心にラジオを聞いています。
前番組と、同じような内容のも多いのですが、パーソナリティの違いで、印象が大きく変わることを、改めて感じています。