エクセルで就業管理をする際に困っています

このQ&Aのポイント
  • エクセルで就業管理をしようとして困っています。エクセルに数式を入力して就業管理をしようと試みているのですが、上手く動かず困っているので、どなたか手を差し伸べてくださいませ。
  • エクセルでの就業管理に関して、[HOUR関数]を利用した数式を導き出したいのですが、うまく動かない問題が発生しています。数式の検証も行いましたが解決できません。
  • 具体的には、退勤時刻から出勤時刻、休憩時間、所定労働時間を引いた結果を求めるために、数式を使用しています。しかし、一部のケースではエラーが発生してしまいます。詳しい方からのアドバイスをお待ちしています。
回答を見る
  • ベストアンサー

エクセルで就業管理をしようとして困っています。

エクセルに数式を入力して就業管理をしようと試みているのですが、上手く動かず困っているので、どなたか手を差し伸べてくださいませ。。 作成している表のすべてを出してしまうと煩雑になるので、問題箇所だけを抜き出して言いますと… エクセルの【HOUR関数】を用いて『退勤時刻-出勤時刻-休憩時間-所定労働時間(8時間)=時間外労働』という数式を導き出したいのですが、上手くいきません。(ちなみにここでは【MINUTE】は無視しています。) たとえば、エクセルの【A1に出勤時刻】【B1に退勤時刻】【C1に休憩時間】を手入力し、【D1に数式】を入れます。 D1に入れる数式は、、、 【=B1-A1-C1-"8:00"】 とします。 A1、B1をそれぞれ… 8:00 と 17:00 や 8:15 と 17:15 にした場合は上手くいくのですが、8:20 と 17:20 や 8:30 と 17:30 にした場合などは数式のエラーで『NUM』が返ってきます。 数式の検証などもしてみたのですが、解決しません。 どなたか詳しい方、お導き願えませんでしょうか。 よろしくお願いします。

  • mykon
  • お礼率50% (3/6)

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答3です。 エラー表示でVALUEが表示されるケースは次のようなものですね。ご質問のケースでは考えられないことです。 http://office.microsoft.com/ja-jp/excel-help/HP005203950.aspx

その他の回答 (4)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答番号:ANo.2です。 >エラーとなってしまうのを、どうにかしたいという事でしょうか。 >いいえ、違います。 という事は、エラーを解決する方法を御尋ねされている訳ではないという事になりますが、それでは一体何を御尋ねになっておられるのでしょうか?  「いいえ、違います。」で終えてしまっているだけで、どの様に違うのかに関する御説明が無いため、御質問の趣旨が解りません。  もしかすると、「#NUM!」エラーが現れる理由を御尋ねになっておられるのでしょうか?  「#NUM!」エラーは、数式、或いは関数に入る数値に問題がある場合に表示されるエラーです。  HOUR関数は、関数内に入れられたシリアル値で表される年月日と時刻の内、年月日と分、秒を無視して、時間の部分のみを取り出す関数です。  例えば、A1セルに 2011/4/1 17:59 と入力されている場合には、 =HOUR(A1) の値は、時刻の時間の部分である17という整数値になります。  Excelのシリアル値は、1899年12月31日の午前0時00分00秒から、何日が経過した時間であるかを表した数値になっていますから、例えばセルに午前9時を表す 9:00 を入力すると、それは1899年12月31日の午前9時00分00秒のを意味する 1900/1/0 9:00:00 が数式バーに表示されます。  これは、1899年12月31日の午前0時00分00秒から、24分の9日が経過した時間になりますから、データとしてのシリアル値は0.375という数値になります。(9時間=0.375日) A1セルに8:00、B1に17:00を入力した場合、その差は8時間になりますから、C1セルに0よりも大きな値が入力されていると、 =B1-A1-C1-"8:00" という数式の計算結果はマイナスになります。  Excelのシリアル値で扱う事が出来るのは、1899年12月31日の午前0時00分00秒から経過した時間だけであり、それ以前の時間は扱う事が出来ません。  そのため、HOUR関数にマイナスの値を入れると、「#NUM!」エラーとなる訳です。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

エラー表示が時間の計算でマイナスになる場合などには####が表示されますが、NUMの表示は考えられません。お示しの計算式では計算できない桁数の計算を実行している場合ですがおかしいですね。別のファイルを使った新しいシートでも同じことが起こるのでしょうか?

mykon
質問者

補足

回答ありがとうございます。 >エラー表示が時間の計算でマイナスになる場合などには####が表示されますが、NUMの表示は考えられません。 とのことですが、実際には画像のように『#NUM!』が出てしまっているのですが、これはどう理解すればいいのでしょうか? >お示しの計算式では計算できない桁数の計算を実行している場合ですがおかしいですね。 どういう意味なのでしょうか? 私の示した数式は『桁数の制限により、計算できない』ということですか? >別のファイルを使った新しいシートでも同じことが起こるのでしょうか? 画像のシートは、現在私が作成している管理表とは、別ファイルです。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 要するに、時間外労働時間をシリアル値ではなく、1時間単位の数値で算出する際に、実労働時間が8時間未満の場合は、時間外労働時間がマイナスとなるため、エラーとなってしまうのを、どうにかしたいという事でしょうか。  それならば、実労働時間が8時間未満の場合は、時間外労働時間を0時間とすれば宜しいと思います。  そのための関数の一例は、次の様なものです。(セルの書式設定は「標準」にして下さい) =IF(COUNT(A1,B1,C1)=3,IF(B1+(A1>B1)-A1-C1-"8:00"<0,0,FLOOR(B1+(A1>B1)-A1-C1-"8:00"+"0:00:01","1:00"+0)*24),"")  計算結果は、1時間単位で表した場合の数値データとなり、1時間未満の端数は切り捨てとなります。  又、実労働時間が8時間以下の場合は、値は0となります。  尚、22時以降の深夜労働時間に関しては、特に考慮しておりません。  因みに、1時間刻みではなく、例えば15分刻みで端数切り捨てた時間を、1時間単位で表した数値データとして計算する場合には、数式中の "1:00"+0 という箇所を、 "0:15"+0 に変えて下さい。  それから、数式中の COUNT(A1,B1,C1)=3 という部分は、A1,B1,C1の各セルに、何れも時刻(又は、日付や数値)が入力されている事を判定している部分で、IF関数との組み合わせにより、3セルの内、時刻が入力されていないセルが1個でもあれば、何も表示されない様になっています。  数式中の B1+(A1>B1)-A1-C1-"8:00" の部分は、時間外労働時間をシリアル値で計算している部分で、その中の +(A1>B1) の部分は、例えば、出勤時刻が16:00で、退勤時刻が夜中の1:00である場合の様に、A1の値の方が、B1の値よりも大きい場合には、計算する上では数値の1として扱われ、 逆に、A1の値の方が、B1の値よりも大きい場合や、A1とB1が等しい場合には、数値の0として扱われます。  シリアル値の計算では、年月日、時間、分、秒の全ては、1日の何倍の時間であるのかで表していますから(例えば1時間はシリアル値では24分の1に等しい数値になります)、 A1の値の方が、B1の値よりも大きい場合には、計算する上では数値の1として扱われる数式が足されているという事は、 即ち、出勤時刻が退勤時刻よりも小さい時刻の場合には、退勤は翌日になってから行ったと見做して、退勤時刻に1日(=24時間)を加えるためにある部分という訳です。(流石に連続して24時間以上勤務した場合には対応していません)  FLOOR関数は、指定した数値刻みで数えた場合に、端数を切り捨てる関数ですから、 FLOOR(B1+(A1>B1)-A1-C1-"8:00"+"0:00:10","1:00"+0) の部分は、時間外労働時間を、1:00(1時間)刻みで端数を切り捨てる関数になります。 "1:00" の部分は、計算式の中に組み込まないと、時刻を表す数値とは見做されないため、0を足して、数式の中に組み込んだ形にしています。  シリアル値の計算では誤差が発生する場合があり、見かけは1時間0分0秒を表す 1:00:00 というデータが、厳密には、0時間59分59.999・・・・・秒であった場合には、 1時間未満の端数を切り捨てると値が0時間となってしまう、 という場合もあるため、端数を切り捨てる前に、念のために10秒を余分に加えてから、端数を切り捨てています。  この様にして計算した「シリアル値で表した時間外労働時間」を24倍する事で、1時間単位の数値に変換しています。

mykon
質問者

お礼

>要するに、時間外労働時間をシリアル値ではなく、1時間単位の数値で算出する際に、実労働時間が8時間未満の場合は、時間外労働時間がマイナスとなるため、エラーとなってしまうのを、どうにかしたいという事でしょうか。 いいえ、違います。 お示しいただき、ありがとうございました。

回答No.1

一応参考ということで 【A1に出勤時刻】【B1に退勤時刻】【C1に休憩時間】 を前提にすると D列に =B1-A1-C1 と記述すればD列は時間のシリアル値が出てきます(24時間が1.0ですので、この値に24をかけると時間が出てくるという仕組みです。) E列に =HOUR(D1)-HOUR(8/24) と記載すれば、時間外労働の(時間)が出てきます。(8時間勤務前提で8/24としています) F列に =MINUTE(D1)/60 と記載すれば時間外労働の(分)が出てきます。 (60で割っているのは、給与計算しやすくするためです) G列に =E1+F1 と記載すれば、F列+G列なので、時間外労働の時間+分が出てきます。 たとえば、1時間半時間外労働すればG列は1.5が戻ります。 あとは、G列に時間外労働の時給を掛け算すれば計算できます。 A列 8:30(出勤時刻) B列 19:00(退社時刻) C列 1:00(休憩時間) と記入すれば D列 0.396(実労働時間のシリアル値) E列 1.000(D列から基準労働時間8時間を引いた時間) F列 0.500(D列から基準労働時間8時間を引いた分を60で割ったもの) G列 1.500 になるはずです。 一応、わかりやすくするために分割していますが、当然一つのセルにまとめることは可能です。 エクセルでの時間計算は慣れないとめちゃくちゃ混乱するので、 ひとつずつ順番に考えるとやりやすいですよ。 あくまでも基本はシリアル値であることをお忘れなく。

mykon
質問者

お礼

シリアル値…1=24Hが参考になりました。 その他の記述は質問外であったので蛇足でした。 ありがとうございました。

関連するQ&A

  • Excelでの勤怠管理

    バイトの勤務時間と休憩時間をエクセルで管理したいと思います。 休憩は決まって15分なのですが、 A列 出勤時間 B列 退勤時間 C列 B-A D列 休憩時間 E列 実働時間 という感じにしたいのですが、この場合休憩時間はどのように入力すればよいでしょうか。 0.25とすると計算がおかしくなってしまいます。 よろしくお願いします。

  • エクセル2011でシフト管理表作ってますが・・・

    出勤時間時間を”A列”に 退勤時間を”B列”にした時 ”C列”に実務時間(退勤時間から出勤時間を引いて、一時間分の休憩を引いたもの) ”D列”に超過勤務(実務時間が9:00以上の勤務時間) A1=10:30、 B1=23:30  C1==IF(OR(B1="",A1="",AND(B1="",A1="")),"",B1-A1-(1/24)) ※=12:00 (※B1-A1-(1/24)は一時間休憩のため) D1の数式はどのようにしたらいいでしょうか? ※勤務時間が9:00に満たない場合、また=0のとき VALUE!、0:00を出さず、空欄表示にしたいのですが・・・ お願いいたします

  • Excelでシフト表作成‥

    Excelで来年の基本シフト表(縦軸:日付・横軸:担当者)を作成しています。 月間労働時間177h、休日8日、1日のシフトパターン(A:7.45h・B:7.20h)の月で、 出勤時刻はA・B共に6:00~9:00の30分単位、 退勤時刻はシフトパターンと出勤時刻によって異なります。 シフトパターン列・出勤時刻列は、ドロップダウンリストからそれぞれ選択できるよう設定してあり、 できるだけ、担当者に入力の手間をかけないよう、 「シフトパターンと出勤時刻を選択すると、  退勤時刻列にシフトパターンと出勤時刻に応じた退勤時刻が設定される」 というようなことがしたいのですが、関数(数式)の設定で出来ますでしょうか? Excel特に関数や数式設定が苦手なので、何方かご教示いただけましたら幸いです。 バージョンはExcel2003です。よろしくお願いいたします。。

  • Excelで勤務表を作りたいのですが

    Excelで勤務表を作りたいのですが、なかなか関数がうまく使えません。 時間計算をご存知の方、教えて下さい。 入力列 A:出勤時刻 B:退勤時刻 C:勤務開始時間 *始業9:00のため、9時より以前の出勤時刻は9:00、9:00以降の出勤はその時刻を表示する。 D:休憩時間 E:実働時間(始:C/終:B/マイナス:D) F:時間内勤務(8時間まで) G:時間外勤務(8時間を超過したところから・22時迄) H:深夜残業(22時以降の勤務時間) このような説明でお分かり頂けるでしょうか。 よろしくお願いします。

  • ややこしいエクセル表計算・・・

    ややこしいと思うのは出来ない私だけかも知れませんが、御指導ください。 労働時間の計算表を作りました。 横列が日付で縦列が上から出勤時刻、退勤時刻、休憩時間、労働時間、累計労働時間、残りの労働時間とし、任意のセルに目標労働時間を入力し退勤-出勤-休憩を一日の労働時間とし累計と目標時間-累計労働時間で残りの労働時間まで計算できる表を作りました。 お尋ねしたい点は、その下に残りの労働時間に対する一日当たりの労働時間を算出したいのです。 一番上の出勤時間のところに休み(予め一か月分は決まっています)の日は『00:00』を入力します。 残りの労働時間割ることの『00:00』が入力されていない空白のセルの数だけって数式作れますか? 仕事で使いたいもので、是非御指導ください。

  • Excelについ教えてください!

    会社で、アルバイトの勤務時間を処理しなくてはなりません。 下記のようなexcelのファイルが1か月単位であがってきます。    A   B   C   D 1  4/10 山田 16:00 退勤 2  4/10 佐藤 14:00 出勤 3  4/10 田中 14:00 退勤 4  4/10 山田 12:00 出勤 5  4/10 田中 9:00 出勤 6  4/9 田中 16:00 退勤 7  4/9 佐藤 15:00 退勤 これを、   A   B   C   D 1    出勤 退勤 2 4/9 ●● ●● 3 4/10 ●● ●● 4 4/11●● ●●     このように別シートに個人毎に日報として抽出したいのですが、うまくいきません。 vlookupだと一つの条件しか指定できませんよね・・・? 例えば、4/10の、且つ、山田の、且つ”出勤”の時間を(B3に)絞り出すなんてことはexcelの関数ではできないのでしょうか? よろしくお願いします。

  • エクセルで時間計算を教えてください!!

     作業の効率化と計算ミスを防ぐため、エクセルで勤務表を作成したいと思っております。 イメージとして     A    B     C     D     E     F     G     H 1列 日   出勤   退勤   残業   深夜  総労働  遅・早   休息 2列 1  4:20   17:42    4:22   0:40   12:22 3列 2  7:51    24:00          2:00    7:57    0:03    7:12 4列 3  0:00    10:50    1:00    5:00    9:00    0:50 5列 4  16:30    6:30    5:00    7:00   13:00 6列 5  8:30   17:30               8:00 A(日)・B(出勤)・C(退勤)・H列(休息)は、手入力しますが、 D(残業)・E(深夜)・F(総労働)・G(遅刻・早退)は、自動計算させたいと考えております。 F(総労働)は 退勤-出勤-休憩=X (Xが8時間以上なら-1時間 8時間に満たない時はそのまま表示) D(残業)は、X-8時間 (Xが8時間に満たない時は、空白のまま) E(深夜)は、22:00から5:00とする。 G(遅刻・早退)は、Xが8時間に満たない時のみ (8時間-X=Y)を表示させる。 ★出勤時間・退勤時間は、人や仕事の内容によりバラバラです。    H(休息)は、2日運行等になった時のみです。   休日など空白になっている時は、空白のまま。   説明が下手で申し訳ありませんが、お知恵を貸してください!! 宜しくお願いします。

  • エクセル出退勤表で時間外と深夜時間外の関数

    エクセルで出退勤表を作りたいと思っています。 所定労働時間は10:00~18:30で休憩1時間入り、7:30です。 18:30~22:00までは時間外労働時間、22:00~翌5:00までは深夜時間外です。例えば出勤時間10:00、退勤時間23:00とすると、時間外は3:30で深夜時間外は1:00です。 セルの縦列には A:日付(例3/11で表示) B:曜日 C:出勤時間(例10:00で表示) D:退勤時間(例23:30で表示) E:所定労働時間(7:30で固定で休憩の1時間を含んでいない) F:時間外労働時間(例3:00で表示) G:深夜時間外(例2:30で表示) Q1:カレンダーの暦通り、曜日をBセルに自動表示させる方法はありますか? Q2:Fセルの18:30~22:00までの時間外労働時間を計算する関数を教えて下さい。 Q3:Gセルの22:00~翌5:00までの深夜残業時間を計算する関数を教えて下さい。 Q4:出勤時間と退勤時間を入力すれば時間外と深夜時間外が表示されるようにしたいのですが可能ですか? よろしくお願いします。 下記の回答を見つけてexcelで作成しましたが、22:00以降の深夜残業は計算で出るのですが 朝5:00前の出勤が計算されません。 朝5:00前の出勤が深夜残業に計算で加味される関数式が判りましたらご教示お願い致します。 例として1.朝の3:40出勤で25:20分退勤      2.朝の3:30出勤で14:30分退勤 の場合でお願いします。 >Q3:Gセルの22:00~翌5:00までの深夜残業時間を計算する関数を教えて下さい。 G2=IF(OR(C2="",D2=""),"",MAX(D2+(D2<C2),22/24)-22/24) ※D2+(D2<C2) C2=10:00で、D2=5:00の場合にD2=27:00とします。 ※22/24="22:00"=22時のこと ※17/48=8.5/24="08:30"=8時間半(休憩時間を含む所定労働時間)のこと

  • 条件を満たす場合、数字を入力させたいのですが・・・

    A(出勤時間) B(退勤時間) C(労働時間〈B-A〉) D(手当) 上記のように入力する項目を作り、現在A(出勤時間) B(退勤時間)を入力すると、 C(労働時間)が計算されるようにしています。 C(労働時間)が1時間以下の場合のみ、200円の手当をつけたいので、 Dに =IF(C<="1:00","200","") と入力してみましたが上手く行きません。 1時間を超える場合は何も表示させずに、1時間以下の場合のみ200と数字を入れるには、 どのようにしたら良いか、教えて頂けると嬉しいです。 宜しくお願い致します。

  • エクセルで勤務時間管理表

    エクセルで勤務時間管理表を作成しました。 D列に出勤時刻、E列に退勤時刻とし、G列には労働時間が4時間を超える場合に1時間マイナスをして表示させるように計算式をいれました。 休日は未入力、空欄です。 これでG列をオートSUMにて月間労働時間表示させると休日の分も1時間マイナスしてしまいます。 どのようにすればいいのでしょう?

専門家に質問してみよう