みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで勤怠管理を行いたいのですが、時間計算の為の設定がよく分かりません。

私の会社では大変複雑な勤務形態となっています。
給与を計算するためにエクセルを使用していますが、
残業した時間については、手入力となっています。
下の例のように、開始時間(24時間表示)と終了時間(24時間表示)
を入力すると自動的に勤務時間(10進法)と深夜時間(10進法)が
自動で表示されるようにしたいのですが、
いろいろやってみましたができませんよい方法を教えてください。
  開始時間  18:00
  終了時間  22:30
  残業時間  04.50
  深夜時間  00.50
00:00を超えた場合でも計算できる方法はありますか。

投稿日時 - 2009-08-19 18:32:03

QNo.5220222

すぐに回答ほしいです

質問者が選んだベストアンサー

B1に18:00
B2に22:30
とし
B3に=HOUR(B2-B1)+(MINUTE(B2-B1)/60)
B4に=HOUR(B2-TIME(22,0,0))+(MINUTE(B2-TIME(22,0,0))/60)
B3セルとB4セルの書式設定で小数点二桁迄表示するようにします。
HOURはシリアル値から時間を取ってくる関数です。
後ろの/60は時間は60進数なのでこれで10進数にしています。

投稿日時 - 2009-08-19 19:48:45

お礼

ありがとうございます。
大変参考になりました。
しかし、00:00を超えたような時刻を入力するとエラーになります。
よい方法はないでしょうか。

投稿日時 - 2009-08-19 20:34:36

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

NO2,NO3です。
もっと簡単な式がありましたので追加情報です。
=HOUR(B2-B1+(B1>B2))+MINUTE(B2-B1+(B1>B2))/60

条件が真で1、偽の時は0とする場合数式で使う為には
(B1>B2)*1 または (B1>B2)/1 とする必要があり、関数の
引数で使う場合は *1、/1 は不要(付けても可)になります。

投稿日時 - 2009-08-19 23:54:27

お礼

ありがとうございます。
うまくいきました。

深夜時間の計算方法でよいものがあれば、
助言お願いします。

投稿日時 - 2009-08-20 11:17:16

ANo.3

NO2です。
済みません見落としがありました。
>=(HOUR(B2-B1+"24:00")+MINUTE(B2-B1)/60)*(B1>B2)
> +(HOUR(B2-B1)+MINUTE(B2-B1)/60)*(B1<=B2)
の部分
=(HOUR(B2-B1+"24:00")+MINUTE(B2-B1+"24:00")/60)*(B1>B2)
 +(HOUR(B2-B1)+MINUTE(B2-B1)/60)*(B1<=B2)
として下さい。
IF文の方も同様です。

また、+"24:00"の部分を+1と変えても同じ結果が出ます。
解りやすさでは+"24:00"、数式の簡潔さでは+1といった所。

ご参考まで。

投稿日時 - 2009-08-19 23:33:53

ANo.2

NO1の方の数式をお借りして零時を超えたときの対応

=(HOUR(B2-B1+"24:00")+MINUTE(B2-B1)/60)*(B1>B2)
 +(HOUR(B2-B1)+MINUTE(B2-B1)/60)*(B1<=B2)

*(B1>B2)と*(B1<=B2)は条件が真で1、偽の時は0として
作用しますのでこのような方法でif文の代用ができます。

=if(B1>B2,HOUR(B2-B1+"24:00")+MINUTE(B2-B1)/60,
HOUR(B2-B1)+MINUTE(B2-B1)/60)
どちらでも全く同じ結果となります。

深夜の計算はこれを参考に考えて見て下さい。
深夜の終了時間および休憩時間を考慮すると一発の数式では
困難かと思います。

投稿日時 - 2009-08-19 22:37:25

お礼

ありがとうございます。
数式の意味するところは、分かるのですが、
エラーが出て、正しく表示されません。
自分でもいろいろやってみようと思いますが、
お気づきのことがあればお教えください。

投稿日時 - 2009-08-19 23:39:30

あなたにオススメの質問