機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > 機能と数式

時間の計算



時間の計算は、Excelの中でも、やっかいな処理のひとつです。ここでは、いくつかのセオリーをご紹介します。

時間を数値に変換する




上図をご覧ください。ある処理の開始時間と終了時間を、それぞれセルA2とセルB2に記録しています。所要時間はセルC2です。「=B2-A2」という単純な計算式を入れています。そして、この時間で処理できたのが100回。セルD2が処理回数です。ここから、次の計算をしてみましょう。

平均1:1分で何回の処理が行えたか
平均2:処理1回あたり何分かかったか

暗算でも分かりますね。所要時間は50分で、処理回数は100回ですから、「100回÷50分=2回」となり

平均1:1分で2回の処理が行えた

さらに「50分×60秒÷100回」=「3000秒÷100回」=30秒

平均2:処理1回あたり30秒(0.5分)かかった

と、小学生でも(たぶん)できる計算です。しかし、Excelでこれを計算しようとすると、少し工夫が必要です。まず「100回÷50分=2回」から考えてみましょう。セルE2に次のような計算式を入力してみます。



表示形式を標準に設定してみると



100回÷50分=2880回って・・・どう計算すれば、こういう答になるのでしょう?
Excelは、次のような計算をしました。所要時間が表示されているセルC2の表示形式を標準にしてみます。



Excelは、日付や時間をシリアル値で管理しています。シリアル値とは、1日を1とする連続した数値です。1日が1なのですから、1時間は「1÷24=0.04166…」となり、1分は「1÷24÷60=0.0006944…」です。つまり50分を表すシリアル値は0.0347222…となるわけです。「100回÷50分」を計算したつもりが、実際には「100回÷0.0347222…」を計算したのですから、そりゃ変な結果になります。

何とかして、シリアル値の「0:50」を数値の「50」に変換しなければなりません。とはいえ、難しく考えることはありません。「0:50」→「50」ということは、つまり「0:50の中に1分がいくつあるか」ということです。これは「0:50÷1分」で計算できます。だから、セルC2の所要時間を1分で割ってやればいいんです。このとき「1分を表すシリアル値がいくつか?」なんてことを考える必要はありません。次のようにすれば計算できます。



セルに、シリアル値を使った計算式が入力されると、Excelは自動的に日付や時間の表示形式を設定しますので、セルの表示形式を標準に戻してくださいね。
これで、時間を数値に変換できましたので、あらためて平均を求めます。



平均2の「50分÷100回」も同じように計算できますね。



所要時間(セルC2)を1分("00:01:00")で割ると「50」という数値(1分が50個あるという意味)になります。それを処理回数の100で割れば「処理1回あたり0.5分かかった」ことが分かります。

この「0.5分」をシリアル値の「0:0:30」に変換するには、さっきと逆の発想をします。つまり「0.5×1分」です。



時刻の表示形式を設定すると



となります。これが基本的な考え方です。


ここまで、「1分を表すシリアル値」を「"00:01:00"」で処理してきましたが、これは簡便な方法です。文字列形式で「"00:01:00"」を計算に用いると、Excelが自動的にそれをシリアル値に変換してくれます。だから、上記のような計算が可能だったわけです。簡便ではなく、それ用の関数を使うのでしたら、「"00:01:00"」の代わりにTIME関数でシリアル値を生成します。平均2は、次のような計算式でも求められます。



時給による給与計算


もう少しだけ実務的なケースで考えてみましょう。



この人の時給は1000円とします。1日に1時間の休憩があるので、その分は勤務時間から差し引きます。8時間を超えた勤務時間に対しては、25%の時間外手当を支給します。

まず勤務時間の合計を求めましょう。セルC7にSUM関数を入力します。



いきなり変なことになりました。これは、セルC7の表示形式が「hh:mm」となっているからです。「hh」は時間を表す書式記号ですが、「hh」は24時間超を表示できません。そこで、表示形式を次のように変更します。



続いて、休憩時間を差し引いたり、時間外手当を計算したりするのですが、こういうときは、それぞれの作業セルを使うといいです。この手の複雑な計算は、1つの計算式だけで答を出すのではなく、途中経過を作業セルに展開しておくと、後で修正するのも簡単ですし、間違いにも気づきやすいです。





時間(シリアル値)を数値に変換します。特に意味はありませんが、ここではTIME関数を使いましょう。



時給をかけます。なお、小数部分は切り捨てました。



合計すれば支給額です。







このエントリーをはてなブックマークに追加