• 締切済み

IF関数を使った勤務時間表

勤務時間表をエクセルで作成しました。 出勤時間 退勤時間 休憩時間 と入力し退勤時間-出勤時間-休憩時間で勤務時間を求めます。それぞれのセルに時間を入力して勤務時間を求めていましたが会社の管理により休憩時間がそれぞれの時間帯に定められています。そこで出勤時間と退勤時間だけの入力で、休憩時間の条件を定義すれば休憩時間は入力することなく求められるかと思いましたがIF関数を使うと複雑で長くなりうまくできませんでした。”この関数に関する引数が多い”とのエラーメッセージが出てしまいます。VLOOKも考えてみましたがもの凄く長い条件になりそうで諦めました。休憩時間は以下の通りになります。 10:00~10:10 12:00~12:40 15:00~15:10 ちなみに私の通常勤務は8:30~16:30となります。 早退や遅刻などはたまになので難しい関数使うよりも 簡単に引くべき休憩時間は分かるんですが…。今後の勉強のためにもいい方法があればと思います。よろしくお願いします。

  • ai763
  • お礼率77% (21/27)

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

すみません、m(_ _)m #1は、#2の方の指摘通り間違いですね。 12:00~12:40 15:00~15:10 の部分が反対になっています。 AND(退勤時間>=休憩終了時間,休憩開始時間>=出勤時間)*(休憩終了時間-休憩開始時間) でないといけません。 申し訳ございませんでした。

ai763
質問者

お礼

いえいえ、謝らないで下さい。言われてみるとそうですね。私自身、頭が足りないもので単純な違いも分かりませんでした。複雑で分かりにくかったものをここまで解明な式に表してもらって感謝してます。少々の間違いはあってもこの式を即答してもらえて感動してます。

回答No.4

私が良く使う勤務表の技を紹介します 私の場合、残業計算に使っているのですが、 今回のような休憩にも応用できるので 紹介します まず、 A列・・出勤時刻 B列・・退勤時間 C列・・休憩時間 とし、 2行目に項目を入力 データは3行目から入力します D列・・休憩1 E列・・休憩2 F列・・休憩3 用に用意します D1に10:00と入力 D2に10:10と入力 E1に12:00と入力 E2に12:40と入力 F1に15:00と入力 F2に15:10と入力 これで準備okです D3に =IF(AND($A3<D$2,$B3>D$1),MIN($B3,D$2)-MAX($A3,D$1),0) と入力してください これは、 A3からB3(出勤時刻から退勤時間)の間に D1からD2の時間が何分入っているかを計算しています (実際にA3とB3に値を入れると判ります) これが、出勤時刻に対する休憩1の時間です。 D3の数式を D3:F33にコピーします ($を意識して入れておりますのでD3をそのままコピペして構いません) 次に休憩時間の計算ですが、 C3に =SUM(D3:F3) と入力し C33までコピーしてください あとは A3からB33まで1ヶ月入力すればOKです。 今後、休憩時刻が変更になった場合は、 D1に10:00と入力 D2に10:10と入力 E1に12:00と入力 E2に12:40と入力 F1に15:00と入力 F2に15:10と入力 ここを変更するだけでOKです。 余談ですが、本来の使い方である残業計算は、 休憩時刻を残業の時刻に変更するだけです。 G列を使用して、D1を複写するだけ。 C列とD列の間に残業の列を追加し、G列を参照するかたちにします。

ai763
質問者

お礼

自力で悩み考えややこしい式で結局完成しなかったものがこんな短い式で集約できてしまうんですね。素晴らしい!の一言です。MINとMAXのこの使い方は知りませんでした。私の場合、残業となるのは勤務時間を8時間を過ぎてからとなります。通常勤務では16:30に退社しますが16:30から10分は休憩時間となるので残業となるのは17:40を過ぎてからとなります。17:40以降勤務するのは月に1回あるかないかペースなんですがね。(^^ゞ教えていただいた関数を使って残業の計算式も入れてみます。いろいろとありがとうございました。

回答No.3

すみません、No.2です。 No.2の D2 に入れる数式を ↓に訂正してください。 --------------------------------------------- =IF(COUNT(B2:C2)<>2,"",(B2<=$J$1)*(C2>=$K$1)*($K$1-$J$1)+(B2<=$J$2)*(C2>=$K$2)*($K$2-$J$2)+(B2<=$J$3)*(C2>=$K$3)*($K$3-$J$3)) --------------------------------------------- (結果は同じですが、休憩時間の変更があった場合、 J1:K3 の時間を変更するだけで済みます。 → 数式の変更が必要ありません)

回答No.2

こんにちは、横から失礼します。 ちょっと確認ですが・・・ No.1の方の数式って合ってますか? もしかしたらウチのおバカなEXCELが おバカな答えを出しているだけかもしれませんが・・・ * たとえば、9:00 - 15:00 の勤務の場合、 休憩時間は 50分ですから、実働時間は 5:10 ですよね? これが No.1の方の式だと 5:00 になりませんか? さらに 9:00 - 12:00 の場合、 休憩時間は 10分だけですから 2:50 のはずなのに 2:10 にまでけずられてしまいます(T_T) * No.1の方の数式をそのまま使うとすれば ↓が正しいのではないでしょうか? -------------------------------- =C2-B2-(AND(C2>=TIMEVALUE("10:10:00"),TIMEVALUE("10:00:00")>=B2)*TIMEVALUE("00:10:00")+AND(C2>=TIMEVALUE("12:40:00"),TIMEVALUE("12:00:00")>=B2)*TIMEVALUE("00:40:00")+AND(C2>=TIMEVALUE("15:10:00"),TIMEVALUE("15:00:00")>=B2)*TIMEVALUE("00:10:00")) -------------------------------- カンちがいでしたらすみません。 *** *** ついでに、どうでもいいことかもしれませんが・・ 休憩時間のトータルを別のセルに出して (退社時間)-(出社時間)-(休憩時間) とした方が数式がすっきりすると思います。 * たとえば規定の休憩時間を J1:J3 に、それぞれ 10:00、12:00、15:00、 K1:K3 に、それぞれ 10:10、12:40、15:10 と入力しておいて 出社時間が B2、退社時間が C2、 休憩時間が D2、実働時間を E2 とすれば (D列、E列も表示形式を「時刻」にしておいてください) D2に↓ -------------------------------- =IF(COUNT(B2:C2)<>2,"",(C2>=$K$1)*(B2<=$J$1)*("0:10")+(C2>=$K$2)*(B2<=$J$2)*("0:40")+(C2>=$K$3)*(B2<=$J$3)*("0:10")) -------------------------------- 以下、必要分オートフィルでコピー E2に↓ -------------------------------- =IF(COUNT(B2:D2)<>3,"",C2-B2-D2) -------------------------------- 以下、必要分オートフィルでコピー

ai763
質問者

お礼

No.1の方の式では私も正確には休憩時間は求められませんでした(T_T)労働時間も単純な引き算とは答えが違ってしまい何か部分的になおせば使えるかとやってはみましたがだめでした…。 教えていただいた式で 退社時間-出勤時間-休憩時間で求める労働時間と一致し休憩時間も正確に表示されました。PC初心者で関数歴半年のオバサンなもので初歩的なものにつまづいてしまい教えてもらってありがたいです。TIMEVALUEも知らなかったので勉強になりました。(時間表示をセルの書式設定から表示形式で時間の数値を標準に直して式に導入していました。)参考にさせていただきます。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

B2が出勤時間で C2が退勤時間の時 以下の式で求められます。 =C2-B2-(AND(C2>=TIMEVALUE("10:10:00"),TIMEVALUE("10:00:00")>=B2)*TIMEVALUE("00:10:00")+AND(C2>=TIMEVALUE("12:00:00"),TIMEVALUE("12:40:00")>=B2)*TIMEVALUE("00:40:00")+AND(C2>=TIMEVALUE("15:00:00"),TIMEVALUE("15:10:00")>=B2)*TIMEVALUE("00:10:00")) 基本は、 退勤時間-出勤時間で 退勤時間>=各休憩時間>=出勤時間の時、休憩時間を引いています。

ai763
質問者

お礼

すごい!!早い回答をいただき驚きました。実はこの数日試行錯誤しながらも解決せず行きつけのPC教室で先生に聞いたら先生が悩んだまま1時間過ぎ、先生の宿題になってしまいました。IF関数ではないんですね。この式をそのまま使わせていただきます。本当にありがとうございました。

関連するQ&A

  • エクセルで勤務表を作っています。

    エクセルで勤務表を作っています。 決まった曜日の決まった時間に出勤&退勤するバイトなので、関数を使って簡単に入力したいと思っています。(月木土日曜日の、17時から22時までの勤務) 項目が「日付、曜日、出勤時刻、退勤時刻、休憩時間、実働時間」とあり、曜日を参照して自動的に 出勤日に17:00、退勤時刻に22:00。休憩時間に0:15と入力するには、どうしたらいいのでしょうか? 一日(たとえば月曜日のみ)などの時は、if関数を使って入力できるのですが、1週間に4日分の入力をする関数の使い方がよくわかりません。andやor関数を使ってみましたが、うまくできませんでした。 わかる方は、是非教えてください。よろしくお願いします。

  • エクセルでどんな関数を使うといいんでしょうか?(出勤表での表示)

    出勤と退勤の時間で遅刻と早退の回数を表示したいのです。 フレックスや日勤と夜勤などの勤務ではないので 出勤時間と退勤時間は決まっています。 例えば 出勤時間が9:00で退勤時間が16:00と言う場合、 9時以降の出勤時間で”遅刻” 16時以前の退勤時間で”早退”と、なり 月の集計で遅刻と早退の回数をそれぞれに示す欄に表示されるには どんな関数を使うといいのでしょうか? 初心者なもんですみません。よろしくお願いします。

  • EXCEL2000で勤務表

    EXCEL2000で勤務表の作成を依頼されました。 関数で計算をしようとしたのですが うまくいかない点があるので 皆様のお知恵をお貸しください 条件は 1.出勤・退勤時間を入力したら休憩時間と勤務時間を求める 2.休憩時間は12:00~13:00と   22:00~23:00の2回(固定) 3.早出,午前半休,午後半休あり 4.時間で1時間単位で○:30という時間はない   (丸め込んだ時間を入力する) (求めたい時間) A列 |B列 | C列| D列| 出勤 |退勤 | 休憩| 勤務|  8:00|17:00| 1 |  8|定時  8:00|23:00| 2 | 13|残業  8:00|12:00| 0 |  4|午後半休  8:00|13:00| 1 |  4|午後半休  7:00|12:00| 0 |  5|早出 13:00|18:00| 0 |  5|午前半休 計算式としては 勤務時間=退勤時間-出勤時間-休憩時間なのですが 休憩時間を求める式がよくわかりません。 情報が不足している場合は補足いたしますので ご指摘ください。 環境OS:WIN98 Office2000 SR2 よろしくお願いいたします。

  • エクセル遅刻・早退時間関数について

    Excel2010 出勤簿の遅刻・早退時間について Excelで出勤簿を作成したいのですが、なかなか思うように作れません。 (1)遅刻時間の求め方について →所定内(残業時含)から実際出勤した時間との差を求めたい (2)早退時間の求め方について  →所定内(残業含)から実際退勤した時間を求めたい 下記の条件となります。 ■勤務時間は ※パターンA(通常):8:00~16:45(昼休0:45)⇒所定内8時間    (8:00~12:00(昼休み)12:45~16:45) ※パターンB(残業):8:00~19:00(昼休0:45/0:15) (8:00~12:00(昼休み)12:45~16:45(0:15休)17:00~19:00) 残業ある場合、16:45~17:00の15分を休憩し、17:00~19:00の2時間を残業とします。 ----------------------------------------------------------------------------------------- 【遅刻時間】と【早退時間】については、 添付ファイルにある、B5~D5/B12~D12の入力している数字になるように式を作りたい。 分かりにくい説明で申し訳ございませんが、 宜しくお願い致します。

  • エクセル 退勤表

    こんばんは。 行き詰まりを感じましたのでどうか教えてください。 只今、エクセルで出退勤表を作成しています。 その際に実労働時間を求めたいのですが、IF関数が上手く組めません。 以下に条件を表示します。 (1)勤務時間は8:30~17:30です。 (2)休憩時間を入れます。  ・8:30~12:00までの出勤の方は昼休憩時間無し、中休憩時  間なしの3時間30分勤務です。  ・8:30~15:00までの出勤の方は昼休憩時間が50分ありの  中休憩時間なしの5時間40分勤務です。  ・8:30~17:30までの出勤の方は昼休憩時間が50分ありの  中休憩10分の8時間勤務です。 自分で時間計算を考えたのですが  8:30~17:30まで「=退勤時間-出勤時間-TIME(1,0,0)」  8:30~15:00まで「=退勤時間-出勤時間-TIME(0,50,0)」  8:30~12:00まで「=退勤時間-出勤時間」 をつかって =IF(退勤時間<="12:00",退勤時間-出勤時間,IF(退勤時間<=15:00,退勤時間-出勤時間-TIME(退勤時間-出勤時間-TIME(0,50,0),退勤時間-出勤時間-TIME(1,0,0) と考えましたが計算ができませんでした。 まったく違うのかもしれません。 訂正もしくは根本的に考えが違うのか、教えてください。 宜しく御願いします。

  • EXCELで出退勤務シフト表を作っているのですが、、、

    (^^;)行き詰ってしまい、困り果ててます。 EXCELで出退勤務シフト表を作っているのですが、、、 日付と個人名を選択し、出勤時間・退勤時間・休憩時間を入力すると右側の表に反映するように設定してますが、上手くいきません。 その右側の表のAさんの出勤時間のセルの式ですが、 =IF($M$70=$D36,VLOOKUP$A4,$M$71:$V$113,2,FALSE)," ") =if(日付が一致したら、個人名と出退勤時間と休憩時間を入力した一覧から、2行目の出勤時間の行を入力、それ以外は、スペースを入力) というつもりで組みました。 表示はされますが、 ・日付を変えると消えてしまう!という問題 退勤時間の方も ・式を退勤時間の3行目が表示されないという問題 勤務時間は更に、 ・退勤時間-出勤時間=勤務時間が#####となってしまうという問題 となっていて、どうしたらいいのか行き詰っています。 良い方法がありましたら、是非、教えてください。 本当に本当にお願いします。 また、こういう問題を実際に教えて頂ける教室や 場所などご存知でしたら、是非、教えてください。 どうぞよろしくお願いします。

  • 会社で勤務表を作成しなくてはならなくなりましたが、エクセル(2003)

    会社で勤務表を作成しなくてはならなくなりましたが、エクセル(2003)関数の知識がありません。 こちらでいろいろ検索しましたが、求めているものがなかったので質問をさせていただくことにしました。 ご教授お願いいたします。 現在、実働時間⇒=IF(B1="","",A1*24-B1*24-D1)と入力しています。 始業時間と終業時間を入力すると実働時間、実働時間が17:45を超えたら普通残業、22:00~翌5:00は深夜残業としたいのです。 日勤勤務は9:00~17:45、夜勤は17:30~翌9:00です。夜間勤務では1.25の休憩があるため実働時間は5.75となります。 また遅刻早退の時間数を求める関数も入れたいです。 24時間体制での仕事なので深夜の時間に対応したものを求めたいのです。 すべての欄の合計値は7:45とかの表示ではなく7.45という表記にしたいです。  始業時間 終業時間 休憩時間 実働時間 普通残業 深夜残業 遅刻/早退  9:00   17:45   1:00  17:30   翌9:00   休憩時間は標準の書式設定[1]になっています。 初めて質問させていただくので、わかりにくいかと思いますがどうかよろしくお願いいたします。

  • エクセルの勤務表計算の関数を教えて下さい。

    会社の勤務表の入力を改良したいのですが、うまくいきません。 詳しい方教えていただけると助かります。宜敷願いします。 まず、勤務時間のトータル時間数が6時間以下の時は休憩は0時間。 17:30迄なら1:00。 17:31~18:00迄は1時間+17:30を超過した分を1分単位でプラスする。 例えば、17:45なら1:15。 18:00を過ぎたら1:30という感じに休憩の欄に表示がしたいです。 B1に出勤時間、C1に退勤時間、D1に休憩時間という入力表になっています。 宜しくお願いします。

  • 勤務表作成について

    勤務表作成について 2点の質問がります。 (1)深夜時間(22:00~翌5:00)を求める関数が何度やってもうまくいきません。 ご教授お願いいたします。 例えば終業時間が23:00だった場合、普通残業に4.25、深夜残業に1.0と表示をさせたいです。 現在は普通残業が5.25となってしまっています。 (2)終業時間から遅刻早退の時間を求めたいです。 例えば9:00~12:00まで勤務をしたら休憩はなしになるので、実働時間は3.0、遅刻早退は4.75となるようにしたいです。 また勤務していないは空白としたいのです。 なお、勤務時間の定時は9:00~17:45です。 以上の2点となります。 よろしくお願いいたします。

  • Excel2010出勤簿の遅刻・早退時間について

    Excel2010 出勤簿の遅刻・早退時間について Excelで出勤簿を作っています。 遅刻を表示する欄に所定出勤時間から実際の出勤時間を引いた時間を表示する関数を、 早退を表示する欄に所定退勤時間から実際の退勤時間を引いた時間を表示する関数を教えていただきたくよろしくお願いいたします。 下記の条件となります。 (勤務時間は19:00~27:00) *遅刻の場合、実際の出勤時間が所定出勤時間より早ければ表示しない。  遅刻の場合、実際の出勤時間の欄に数値(時間)入力がなければ表示しない。 *早退の場合、実際の退勤時間が所定退勤時間より遅ければ表示しない。  早退の場合、実際の退勤時間の欄に数値(時間)入力がなければ表示しない。 【遅刻:例】 所定出勤時間セル1A  実際の出勤時間セル2A 遅刻時間セル3A  例:1)セル1A=19:00 セル2A=18:30   セル3A= 例:2)セル1A=19:00 セル2A=19:00   セル3A= 例:3)セル1A=19:00 セル2A=19:30   セル3A=0:30 例:4)セル1A=19:00 セル2A=      セル3A= 【早退:例】 所定退勤時間セル1B  実際の退勤時間セル2B 早退時間セル3B  例:1)セル1B=27:00 セル2B=26:30   セル3B=0:30 例:2)セル1B=27:00 セル2B=27:00   セル3B= 例:3)セル1B=27:00 セル2B=27:30   セル3B= 例:4)セル1B=27:00 セル2B=      セル3B= 何卒よろしくお願いいたします。

専門家に質問してみよう