エクセルで残業時間月合計を正確に計算できない理由と解決法

このQ&Aのポイント
  • エクセル2007で勤務時間を管理する際、残業時間月合計が正確に計算されない問題が発生しています。入力されるのは出勤時間と退社時間のみで、途中の休憩時間は考慮されていません。これにより、正確な在勤時間や残業時間が計算されず、月合計も正しく表示されません。
  • 問題の原因は、平日でも出勤時間と退社時間が入力されていない場合に、基本在勤時間として8:30が表示されるためです。これにより、在勤時間や残業時間が実際と異なって計算されてしまいます。また、土日や休日でも勤務日として計算されてしまうため、正確な月合計が表示されません。
  • 問題を解決するためには、平日の場合は出勤時間と退社時間が入力されているかをチェックし、入力されていない場合は基本在勤時間として0:00を表示するようにする必要があります。また、土日や休日の場合は勤務日として計算されないようにすることで、正確な月合計を計算することができます。
回答を見る
  • ベストアンサー

残業時間月合計(エクセル)を正確に計算できません

エクセル2007で,勤務時間を管理表を作成していますが,残業時間月合計(G36のセル)が正確に計算されません。 社員に入力してもらうのは,出勤時間と退社時間だけです。 勤務時間(在勤時間)は8:25~16:55で,途中の休憩時間は考慮しません。 項目と入力してある関数は下のとおりです。   A  B     C     D      E         F        G   日 曜日 出勤時間 退社時間 在勤時間  基本在勤時間   残業時間 5 1  金    8:15    17:00   8時間30分   8:30        0時間15分 6 2   土    9:00    10:10    1時間10分   0:00        1時間10分 36 月合計                 229時間40分  68:10       68時間10分            E列の関数・・・「=D5-C5」(表示形式は h"時間"mm"分") F列(非表示)・・・平日は「8:30」と入力(8:25~16:55が8時間30分であるため)            土日・休日は「0:00」と入力(勤務日でないため) G列の関数・・・「=D5-C5-F5」(表示形式は h"時間"mm"分") E36の関数「=SUM(E5:E35)」(表示形式は [h]"時間"mm"分") F36の関数「=SUM(F5:F35)」(表示形式は [h]:mm) G36の関数=SUM(G5:G35)」(表示形式は [h]"時間"mm"分") 平日で,C列とD列が入力していないのに,F列に8:00が入力してあるため,G列の計算がマイナスになることが原因で正確に計算できないのでしょうか。 簡単な関数を使って正確に残業時間月合計が計算できる方法を教えてください。 よろしくお願いします。               

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.3です! >でも正確に計算ができません。 とありますので・・・ 計算式が入っているセルすべてに =ROUND(計算式,5) を利用してもダメでしょうか? =IF(COUNTBLANK(C5:D5),"",ROUND(計算式,5)) といった感じです。 他に時間計算のセルがある場合も単純にプラス・マイナスするだけでなく =ROUND(計算式,5) のようにします。 それでも希望通りにならなかったらごめんなさいね。m(__)m

daikinboshi310
質問者

お礼

うまくできました!! 急いでいたので,とても助かりました。 何度も回答いただき感謝しています。 ありがとうございました。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 内容を詳しく検証していませんので、外していたらごめんなさい。 (1)F列の数式を =IF(COUNTBLANK(C5:D5),"",計算式) のようにして、C・D列のどちらかが未入力であれば数値を表示しないようにしてみてはどうでしょうか? (2)No.1の方が仰っているように時間計算は「浮動小数点」の関係でこちらの希望通りの数値にならないことがあります。 それを回避する方法として、計算式を小数点以下5桁くらいで丸める方法があります。 =ROUND(計算式,5) といったような感じです。 それから余計なお世話かもしれませんが、 >G列の計算がマイナスになることが原因で正確に計算できないのでしょうか。 とありますので、もしマイナスの計算を行いたい場合は 当方使用のExcel2003の方法として メニュー → ツール → オプション → 計算方法タブ で「1904年から計算する」にチェックを入れれば マイナス計算も可能になります。 Excel2007以降も同様の方法はあると思いますが、具体的な操作は手元にExcel2007がないのでごめんなさい。 尚、この方法はあくまで最終手段で極力時間計算等にはマイナスが出ない方が良いと思います。 この程度でごめんなさいね。m(__)m

daikinboshi310
質問者

お礼

ありがとうございます。 =IF(COUNTBLANK(C5:D5),"",計算式) は,勉強になりました。 利用させていただきます。 でも正確に計算ができません。 また,勉強してみます。

noname#154242
noname#154242
回答No.2

5/1(金)在勤時間は8:45のはずです。 また、在勤時間と基本在勤時間が同じなのに、残業が0:15つくのは変です E列の関数にFLOORとか使われているのですか? さらに F列は8:30と0:00しか入力されないのなら、合計で68:10となるのも変です >C列とD列が入力していないのに, >F列に8:00が入力してあるため, >G列の計算がマイナスになることが それは大きく誤差を生むはずですので、C列およびD列にシリアル値が入力されていない場合はEもFもGもゼロと入力されるようにしなくてはならないのでは?

daikinboshi310
質問者

お礼

ありがとうございます。分かりにくくてすみません。 「5」「36」は行番号で, 「5」行目が1日,「36」行目が31日で,「6」から「35」の間は日にちが入力されています。

  • Saturn5
  • ベストアンサー率45% (2270/4952)
回答No.1

G列を以下の式にするのはどうでしょうか? IF(C5="",0,D5-c5=f5) 時間計算はかなり難しい物です。 また、出退勤には各社の細かいルールがあり、Excelを これに併せるのは難しいこともあります。 試行錯誤をしてがんばってください。

daikinboshi310
質問者

お礼

ありがとうございます。 時間を入力すると,「FALSE」が表示されてしまいます。 試行錯誤してみます。

関連するQ&A

  • 残業時間の合計が

    B F列 開始時間 C G列 退社時間 D H列 残業時間 E I列 残業手当 を入れて31日まで入れています。 下記のような数式を(H9)に入れて31日分まで(H39) =IF(AND($F9<G$9,$G9>D$5),MIN($G9)-MAX($F9,D$5),0) 31日分まで(H39)までコピーしています 残業時間の合計時間ですが =SUM(D9:D39) この列はちゃんとイイです =SUM(H9:H39) この列は30日迄はいいのですが31日        に入力されると0.00となります        30日迄はいいのです なにが問題なのか困っています どなたかご指導いただけませんか

  • エクセル 時間の合計数が適正に表示されません

    添付のようなタイムシートを作成しましたが、「合計の時間数」が適正に表示されません。 D12、E12には正しくない合計時間数が表示され、 F12、G12に至っては、表示すらされません(TT) 間違っているのではなく、適正な表示になってくれていないだけだろうなとは理解できるのですが なぜこんな表示になってしまうのか、まったくわかりません。 どなたかご教示いただけないでしょうか。 よろしくお願いいたしますm(_ _)m 各列の関数は以下のとおりです。 D列=C-B-J E列=MIN("8:00",D) F列=D-K G列=C-I 合計のセルは次のように設定しています。 D12=SUM(D5:D11) E12=SUM(E5:E11) F12=SUM(F5:F11) G12=SUM(G5:G11) 各セルの表示形式は、 [h]:mm;; です。 よろしくお願いいたしますm(_ _)m

  • 【Excel】時間計算について

    Excel2003を使用しています。 残業時間の計算について、下記のような場合、F2とG2には、どのような数式を入力すればいいでしょうか? 22時以降は深夜残業となりますので、終了時刻が22時を過ぎた場合は、その部分の時間をG列の深夜残業に表示し、22時まではF列の残業に表示させたいのです。表示形式は、C列とE列は『時刻』、F列とG列は『h"時間"mm"分"』になっています。    C列     E列        F列      G列 1  開始時刻  終了時刻  残業      深夜残業 2  17時30分  23時30分  4時間30分  1時間30分 IFで条件分岐して入力してみたり、過去の質問も検索してみましたが、思うように表示させることができませんでしたので、質問させていただきました。 よろしくお願いします。

  • 1日=465分の勤務時間の合計計算

    お世話になります。 1日7時間45分勤務において、従事時間の合計を日数・時間・分で表示させたいのですが、 以下のような数式を入れて、時間計算しようとしたのですが、どうしてもうまくいきません。 例)従事時間合計が25時間15分の場合、3日2時間0分と表示させたい。 =SUM()で、表示形式を[h]:mmにして、合計従事時間数「25:15(セルA2)」を算出。 次に、総取得分にする・・・B2=A2*24*60=1515(以下表示形式はすべて:標準)     総取得分を日(465分)に変換する・・・C2=ROUNDDOWN(B2/465,0)     日数を除き残った分を計算する・・・D2=B2-C2*465   時間に変換・・・E1=D1/60     残分を計算・・・F1=D2-ROUNDDOWN(E2,0)*60 という、式を組み立てました。 表示させるセル D5=C2 (表示形式 #"日") E5=ROUNDDOWN(E2,0) (表示形式 #"時間")            F5=F2 (表示形式 #"分")  とすると、3日1時間60分となってしまいます。  ・・・3日2時間の表示にしたい。 従事時間合計が55時間15分の場合も、7日60分という表示になってしまいます。                               ・・・7日と1時間にしたい。 よい方法はありませんでしょうか? よろしくお願いいたします。

  • エクセルの時間の合計が表示されないんですが・・

    すみません、以前も休憩時間の計算方法などでこちらで教えて頂いたのですが、 また、つまづいてしまいまして・・すみませんが教えてください。 エクセルで、勤怠管理をしています 負の表示はさせないように  セルの書式設定の表示形式をユーザー設定で [h]:mm;; としたところ、 その複数セルの時間合計をSUMで自動表示させようとしたところ空白になってしまいます。 どうすれば合計が計算表示されるのでしょうか? 時間表示は、0:00の60進法表示です。 具体的には下記のような表を作っています (必要ない情報かもしれませんが) Aセル:出社時間 Bセル:退社時間 Dセル:延時間 Eセル:休憩時間 Fセル:就労時間(=D-Eで自動表示) Gセル:8時間超勤務時間(=F-("8:00"*1)で自動表示) Gセルのみ、負の表示はさせないように セルの書式設定の表示形式をユーザー設定で [h]:mm;; としています そうしたところ、Gセルの時間合計をSUMで自動表示させようとしたところ空白になってしまいます。 どうすれば合計が計算表示されるのでしょうか? 宜しくお願いいたします。

  • エクセルで時間の合計ができません

    セルの表示を0:00となる[h]:mmとしています。たとえば、SUM(A1+A2+A3+A4+A5)とすると5:00など正常に動きますがSUM(A1:A5)とすると0:00となります。時間形式以外の計算ではSUM(A1:A5)の関数も正常に動きます。TEXT関数を調べましたが理解できませんでした。とても困っています。よろしくお願いします。

  • 時間計算できず困っています。

    WIN7, EXCEL2007で時間計算しようと思います。 E列に開始時間9:20 K列に終了時間11:40と入力しました。 Q列には関数 =+K63-E63+(E8<K63) が入っていますので 表示は2:20と表示されています。 Q列の最終行に =SUM(Q61:V91)の関数が入っており表示は10:20となっており 1行ずつ確かめたところ、間違いなく10時間20分でした。 この10時間20分を別のセルで 10.333に直し、たとえば単価1000円なら10333円というところです。 ところが、Q61:V91を範囲選択し下のコマンド欄を見ると 平均4:58:43 データの個数31 合計154:20:00となっているのです。 そのため154.333時間として計算されてしまいます。一体この数字はどこからでてきたのでしょうか。 表示どおり10時間20分で計算するにはどうしたらよろしいでしょうか。

  • 時間の合計切上げ表示についてご再質問

    先月、時間の合計切上げ表示についてご質問しご回答をいただき解決いたしましたが、不具合が発生し再度ご質問させていただきます。 F4には始業時間を入力します。 I8:I38には出勤時間を入力します。 Z8:Z38には下記の関数を入力して遅刻時間を表示します。 =IF(F4=0,"",IF(OR(I8-F4<=0,I8=""),"",I8-F4)) *上記関数の「I8」はI8:I38にそって変更します。 *F4が未入力の場合は数値は表示しないようにしてます。 Z41にはZ8:Z38の遅刻合計時間を下記の関数を入力して表示します。 =SUM(Z8:Z38) V8:V38には中抜け時間を入力します。 V41にはV8:V38の中抜け合計時間を下記の関数を入力して表示します。 =SUM(V8:V38) H58にはV41:Z41の合計時間を30分単位で切上げて表示します。 前回、H58=CEILING(SUM(V41:Z41),"0:30" を入力すると V41:Z41の合計が1:00ではH58に1:00と表示されますが、 1:30ですと2:00と表示され 2:00ですと2:30と表示され合計プラス30分での表示となります。 *30分単位の入力での表示結果となりますが、時間の合計が1:29の場合は1:30分表示となり、1:31分の場合は2:00表示と正常に表示されます。 *すべての対象セルの書式設定は『ユーザー定義 [h]:mm』としております。 前回、上記の問題の解決方法を質問し下記の関数の入力のご回答をいただきましてこちらの問題は解消されましたが、V41:Z41の合計が「24:00」を過ぎるとH58は「0」からに戻って表示されます。 H58=CEILING(TIME(HOUR(SUM(V41:Z41)),MINUTE(SUM(V41:Z41)),SECOND(SUM(V41:Z41))),"0:30") H58には合計が24:00が過ぎても24:30分などと正しく合計が表示される方法のご教授を何卒よろしくお願いいたします。

  • エクセルでタイムカードの時間計算をしたい

    エクセルでタイムカードの管理を行いたいので、 エクセルの表に出勤時間と退勤時間を記入したら 表の右側に残業時間や早出の時間を表示したいと思っています。 画像のC列・D列に出勤時間と退勤時間を入力するだけで E・F・G・H 列をそれぞれ表示させたいと思っています。 H列はわかるので E・F・G列に入る表計算式があれば、それぞれ教えて頂きたいのです。 E列・・9時よりも前の出社がある場合のみ、表示。     30分単位で切り捨て     (例)7:40分出勤の場合・・8時から9時までの計算となり        1時間で、(表示は1:00としたい) F列・・8時間(8:00)で固定 G列・・9時から退勤の時間の合計より9時間分を引いたもの。     (例)出勤6:55 退勤19:23 の場合        9時~19:23分までが対象の時間となり        10時間(23分は切捨て)から9時間を引いた        1時間となる(表示は1:00としたい) 以上、わかりずらいかもしれませんが もし、このような計算ができるのであれば、 よろしくお願いします

  • Excel での時間計算

    Excel での時間計算で、24時間超の時間を求める際に 全時間の合計(Sum)で計算をし、表示形式を[h]:mmに設定 したのですが、まったく違った答えが出てきます。 ex, 14時間+20時間15分=34時間15分が1162時間15分と計算 されてしまいます。 どの様に修正したらよいのでしょうか?

専門家に質問してみよう