プロが教える店舗&オフィスのセキュリティ対策術

エクセルにて、一日の出勤、帰着などの時刻を記録し、データー加工していますが午前0時をすぎる日があり、うまく処理できません。

列の項目 入力は、出発時刻、帰着時刻。
計算して表示する列は、出発から帰着までの時間、9:30を業務開始時刻としての就業時間、目標出発時刻7:30より実際の出発時刻のずれ+-、目標帰着時刻22:30より実際の帰着時刻のずれ(分)+-です。

行のほうは、 1ヶ月の日にちごとのレコード、合計、平均、最大、最小です。

レコードには、休日は入力しないのでNULL値になっています。これを0としないことが、平均出すために必要です。

いま、起こってる現象としては、目標との差が30分のはずが1410分と表示されたりしてしまう。

とにかく深夜0時をこえるレコードがあるため、うまくいきません。

平均も夜23時と、深夜1時の平均は真夜中0時となってほしいのに正午になってしまいます。

一番遅い帰着時間の日は、午前2時の日になるべきところが23時59分の日になってしまいます。一番早い帰着時間も同様、午前0時過ぎの日になってしまいます。

A 回答 (4件)

エクセルの表示形式は、普通に時刻を入力すると、"h:mm"になってしまいます。

この場合、24時間、60分、60秒を超える表示はできません。hを[]で囲んで"[h]:mm:ss"と表示形式を変更すると、24時間を超える時間を表示できるようになります。ご質問の件の夜23時と、深夜1時の平均が、真夜中0時(24:00)と表示されるはずです。
詳細は以下のURLなどを参照してみてください。

参考URL:https://azby.fmworld.net/usage/windows_tips/2005 …
    • good
    • 0
この回答へのお礼

アドバイスにしたがって、表示形式を[h]:mmにして見ましたらうまくいきました。
データーがそのままではうまくいきませんが、1:09→25:09のように入力しなおして見ましたらばっちりです。25時とか26時とかは慣れていないので、入力に戸惑います。1時と入れると25時と変換されるように工夫してみたいと思います。
ありがとうございました。

お礼日時:2006/08/22 16:44

0時過ぎたら1を足せ、という諺がありますよね。

(ないか)
入力で対応してもいいし、数式で吸収してもいいと思います。

>目標との差が30分のはずが1410分と表示されたりしてしまう。
24*60-30=1410
まさに1日分のズレですね。
    • good
    • 0
この回答へのお礼

今まで作った計算式は、No1.の方の補足の所に書いておきました。”24:00”を足すという数式は、入れて合ったのですが、アドバイスにしたがって「1」に変えてみました。でも、結果は変わりません。
ありがとうございました。

お礼日時:2006/08/22 16:17

>とにかく深夜0時をこえるレコードがあるため、うまくいきません。


>平均も夜23時と、深夜1時の平均は真夜中0時となってほしいのに正午になってしまいます。

エクセル内部では1時間が1/24の値に換算されます。
23:00は23/24、01:00は1/24ですから平均を取ると12/24=昼の12時となってしまいます。

ですから24時を越える場合は数字の1を加算してやらなければなりません。深夜1時は01:00に1を加えて25/24、これと23時の平均を取ると深夜0:00になります。

でもこのような処理をEXCELで実現する場合、「何を以て日またがりと判断するか」は結構難しい問題です。(07:00は当日の7時? 徹夜明けの7時? など)

ですから場合によっては25:00、27:00などの表記をした場合が計算しやすい場合もありますので検討されてみてください
    • good
    • 2
この回答へのお礼

深夜0時を越えるデーターが入る列は決まっておりこの列には、逆に午後5時以前のデーターは入ることはありません。今は、AM9:30を基準に判定を考えましたが、AM7時でも正午でも大丈夫だと思います。
ありがとうございました。

お礼日時:2006/08/22 16:39

実際に使用しているデータ表と数式を提示しないと、回答がつかないと思います。


提示があれば数式の訂正等具体的に回答されるはずです。

この回答への補足

エクセルをこの「教えてGOO」に添付する方法がわからず、遅くなってしまいました。
セル連結などしてあるわかりにくい表なのですが。
E列:出発時刻の入力 例8:01:00 画面上の表示は秒は表示していません。
J列:帰着時刻入力 例1:53:00 深夜0時を越えるデータ入力があるのはこの列だけです。
C列:出発時刻の目標(8:00)よりのずれ。早いほど+評価。
M列:数式 =IF(E9="","",IF(J9<"9:30","24:00"-"9:30"+J9,J9-"9:30"))
9:30から帰着までの時間を仮想勤務時間として計算。休日は、入力しないのでnullです。0にしてしまうと平均値が狂うのでわざと判定を入れています。
ここまでは、正しく計算されています(という気がします)。表示形式はh:mm。ただ、ここの”24:00”が曲者のような気もしています。

H列:数式=IF(E9="","",(M9-"13:00")*1400)
帰着時間の目標(22:30)からのずれ。
帰着時間が0時前のときに1440を超える異常値が出ます。

Q列:仮想勤務時間の累積です。
数式 =IF(E8="",0,M8*1440)
次の行は、=IF(E9="",Q8,Q8+M9*1440)
ここも帰着時間が0時前のときに異常値が加算されていってるような...

各列に平均、最大、最小を出す数式を入れた行を作っていますが、はっきり言って得られる結果はほとんどむちゃくちゃです。
数式の例 =AVERAGE(E8:E38)
     =MAX(E8:E38)
     =MIN(E8:E38)
このE列は、まともですが、他は...

こんなのでわかりますか?

補足日時:2006/08/22 15:40
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!