痔になりやすい生活習慣とは?

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

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

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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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
    • 1
この回答へのお礼

深夜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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル2010 深夜残業時間の計算

出社・退社の時間から、残業、深夜残業など、
残業時間を算出する数式を作成していますがどうにもうまく出来ません。

残業となる時間の切り分けは、平日は以下のようになっています。、
 基本時間→8:30~17:15
 残業→5:00~8:30 と17:15~22:00
 深夜残業→22:00~翌朝5:00
 休憩時間→0:45(C1) 基本勤務時間→8:00(B1)

例えば平日、朝6:00出社→23:00退社であれば、
早朝残業が2:30、通常残業が4:45、計7:15です。深夜残業が1:00となります。

F欄に時間外、 G欄に深夜残業としています。
現状は時間外を出すのに  =SUM(E5-D5)-$B$1-$C$1-G5 と単純にしてます。(G5は手入力)
これを自動で入力できたらと考えています。
5:00前に出勤することはほとんどありませんが、22:00を超えることはあります。
ただし、24:00を超えると翌日計算になります。

過去欄を参考にしようにも理解できなく困っています。
http://oshiete.goo.ne.jp/qa/8147465.html
よろしくお願いいたします。

出社・退社の時間から、残業、深夜残業など、
残業時間を算出する数式を作成していますがどうにもうまく出来ません。

残業となる時間の切り分けは、平日は以下のようになっています。、
 基本時間→8:30~17:15
 残業→5:00~8:30 と17:15~22:00
 深夜残業→22:00~翌朝5:00
 休憩時間→0:45(C1) 基本勤務時間→8:00(B1)

例えば平日、朝6:00出社→23:00退社であれば、
早朝残業が2:30、通常残業が4:45、計7:15です。深夜残業が1:00となります。

F欄に時間外、 G欄に深夜残業としています。
現状...続きを読む

Aベストアンサー

深夜部分の残業時間を計算するなら、以下のような数式で早朝(5:00以前)部分と夜間(22:00以降)部分の深夜残業を足し算するのが簡単です。
(退出時間が翌日になる場合は25:00のような形式で入力した場合)。

=5/24-MIN(D5,5/24)+MAX(E5,22/24)-22/24

退出時間を「25:00」ではなく通常の「1:00」のように入力する場合は、以下の式で計算することができます。

=5/24-MIN(D5,5/24)+MAX((E5<D5)+E5,22/24)-22/24

ところで、深夜部分がメインの勤務がある場合、休憩時間などは考慮しなくてもよいのでしょうか?

QExcelで、VBAのcase文のような使い方のできる関数(セルに入力して使う関数)はないでしょうか。

タイトルの通りなのですが、

たとえば、
A1のセルの値が 1 だったら B1は "仕入先"
A1のセルの値が 2 だったら B1は "得意先"
A1のセルの値が 3 だったら B1は "社員"
のようにしたいのです。

if文を駆使すれば可能なのは理解しているのですが、もう少しスマートに式を書けないかな、と思って質問しました。

Aベストアンサー

条件が少ない場合、
=IF(A1<>"",LOOKUP(A1,{1,2,3},{"仕入先","得意先","社員"}),"")や=IF(A1<>"",CHOOSE(A1,"仕入先","得意先","社員"),"")
条件が多い場合、
=IF(A1<>"",VLOOKUP(A1,$C$1:$D$m,2FALSE),"")
・関係表リストを別に設定します。
 C1(1),D1(仕入先)
 C2(2),D2(得意先)
 C3(3),D3(社員)
 Cn(x),Dm(yyy)

Q31:30:00が1900/1/1 7:30:0

エクセルで時間を入力してるのですが
「21:30:00」と入力すると「21:30:00」のままなのですが
他のセルに「31:30:00」を入力すると表示は「31:30:00」になるのですが、
数式バーは「1900/1/1 7:30:00」になってしまいます。

どちらも書式は「[h]:mm」にしています。
なぜ30時間を超えるとおかしくなるのでしょうか?

Aベストアンサー

エクセルの日付は、1900年1月1日が起点です。
数値の1を表示形式「[h]:mm:ss」で表示すると、24:00:00(24時00分00秒)
「hh:mm:ss」で表示すると、00:00:00((00時00分00秒)
yyyy/mm/dd で表示すると、1900/01/01(1900年1月1日)
yyyy/mm/dd hh:mm:ss で表示すると 1900/01/01 00:00:00

となります。

時刻表示の 21:30:00 は、数値では、0.8958
時刻表示の 31:30:00 は、数値では、1.3125
です。
数値の1が1日(24時間)に相当します。正確に言うと、数値1の違いが1日(24時間)の違いに相当します。

数値で1以下は1900年1月1日以前なので、数式バーに1900/01/00 21:30:00 と表示しても良いのですが、日付に0日というのはありませんので変ですよね?そこで仕方なしに時刻の部分だけを表示するようにしたのでしょう。(エクセルを作った人は困ったと思います。)エクセルの仕様だ、と言えばそれまでですが、

30時間を超えるとおかしくなるのでではなく、24時間以上だと表示が変わるのです。

エクセルの日付は、1900年1月1日が起点です。
数値の1を表示形式「[h]:mm:ss」で表示すると、24:00:00(24時00分00秒)
「hh:mm:ss」で表示すると、00:00:00((00時00分00秒)
yyyy/mm/dd で表示すると、1900/01/01(1900年1月1日)
yyyy/mm/dd hh:mm:ss で表示すると 1900/01/01 00:00:00

となります。

時刻表示の 21:30:00 は、数値では、0.8958
時刻表示の 31:30:00 は、数値では、1.3125
です。
数値の1が1日(24時間)に相当します。正確に言うと、数値1の違いが1日(24時間)の違いに相当します。

数値で1以...続きを読む

Qエクセル関数 時間の一覧で時間範囲を条件に抽出入力

8:44, 10:34, 12:13...など時間が縦にならぶ一覧Aがあり、もうひとつ、9:50, 10:00, 10:30...など時間が縦に並ぶ一覧B があります。Bの20分以内(20分前~20分後)という条件に合致するAの時間をBの該当する時間の横に入力する、という関数を教えてください。
この例の場合だと、10:34の横に10:30が入力される。
ひとつの関数で無理でしたら、何回かステップを分けてもいいですが、一番簡単なのを教えていただけると助かります。

Aベストアンサー

一覧AのデータがA1セルから下方にあり、一覧BがE1セルから下方にあるとしたらB1セルには次の式を入力して下方にドラッグコピーします。

=IF(A1<MIN(E:E),IF(MIN(E:E)-A1<="0:20"*1,MIN(E:E),""),IF(A1>=MAX(E:E),IF(A1-MAX(E:E)<="0:20"*1,MAX(E:E),""),IF(A1-INDEX(E:E,MATCH(A1,E:E,1))<="0:20"*1,INDEX(E:E,MATCH(A1,E:E,1)),IF(INDEX(E:E,MATCH(A1,E:E,1)+1)-A1<="0:20"*1,INDEX(E:E,MATCH(A1,E:E,1)+1),""))))

配列数式などを使っておりませんのでデータ数が多くなっても計算に負担のかからない方法です。


人気Q&Aランキング