• ベストアンサー

Excel:特定の条件でFLOOR関数を使うには?

Excelを使って、勤務表を作成しています。 開始時刻、終了時刻を入力すると、 終了時刻ー開始時刻ー休憩時間という具合に当日の勤務時間を出力させるようにしています。 当日の勤務時間を出力するセルには以下の条件が必要です。 (1)開始、終了時刻が入力されていない時、0:00と表示する。 (2)開始時刻8:30(もしくはその時刻より前)、 終了時刻17:05と入力された時、7:50と表示する。 (3)(2)の条件以外は15分単位で勤務時間を表示する。 15分単位で丸めるということでFLOORを使うのですが、 そうすると(2)の条件がまったく無視されてしまい、うまくいきません。 FLOORを特定の条件の時のみ、適用する方法があれば教えて下さい。 よろしくお願いします。 使用ソフト:Excel2002 ------------------------------------------------- ちなみに以下のような計算式を当日勤務時間が出力されるセルに書いて試してみました。 =IF(D9="17:05","7:50",IF(COUNT(C9:D9)<2,"0:00",FLOOR(D9-P9-E9,"0 :15"))) 計算式の意味↓ 終了時刻に17:05と入力されたら、当日勤務時間のセルに7:50と表示。 開始、終了が入力されないと、0:00と表示。 そうでなければ、終了ー開始(8:30以前を8:30と考えるセル)ー休憩で計算し、15分単位で表示。 とこのように書いてみたものの…うまくいきませんでした。

  • ima15
  • お礼率80% (90/112)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 時刻(のシリアル値)の比較は、 D9="17:05" という書き方では出来ません。 これだと単なる文字列の「17:05」と比較することになります。 右辺を時刻のシリアル値に変換してやればいいです。 変換方法は、TIMEVALUE関数を通してもいいし、何か数値を掛けたり足したり(四則演算)してやってもいいです。 値を変えないということで、1を掛けてやるといいでしょう。 D9="17:05"*1 で、あとは、条件(1)が最優先ということを考慮して、 =IF(COUNT(C9:D9)<2,0,IF(AND(C9<="8:30"*1,D9="17:05"*1),"7:50"*1,FLOOR(D9-C9-E9,"0:15"))) という感じになります。 (C9:開始、D9:終了、E9:休憩時間としました。)

ima15
質問者

お礼

迅速な回答ありがとうございます。 早速、計算式をセルに書いてみたところ、うまく計算されました! 文字列と比較させていたために、うまく計算できなかったんですね…。 勉強になりました。 本当にありがとうございました。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

C9=開始時刻,D9=終了時刻,E9=休憩時間として =IF(AND(C9>0,C9<=17/48,TRUNC(D9*288)=205),47/144,FLOOR(MAX(D9,17/48)-MAX(C9,17/48)-E9,1/96) ) 開始時間が8:30以前で終了時間が17:05なら7:50 上記以外は終了時間が8:30以前なら00:00 8:30以降なら開始時間(8:30以前を8:30と考えるセル)-休憩時間

ima15
質問者

お礼

早速の回答ありがとうございます。 mshr1962さんの計算式でも試してみたところ、うまく計算されました。 同じ結果を出すときでも、違う書き方があるんだなーと改めて勉強になりました。 本当にありがとうございました。

関連するQ&A

  • Excel:特定の時刻から15分単位で表示させるには?

    勤務表を作成しています。 終了時刻ー開始時刻ー休憩時間という具合に当日の勤務時間を出力させるようにしています。 当日の勤務時間を出力するセルには以下のような条件で計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(AND(C13<="9:00"*1,D13>="17:40"*1,"18:1 4"*1>=D13),"7:40"*1,IF(AND(C13>="12:00"*1,"13:00"*1>=C13,D13>="1 7:40"*1),"4:40"*1,IF(AND(D13>="12:00"*1,"13:00"*1>=D13),"3:00"*1, FLOOR(D13-P13-E13,"0:15"))))) (1)開始、終了時刻が入力されていない時、0:00と表示。 (2)開始時刻9:00(もしくはその時刻より前)、 終了時刻17:40から18:14の間の時刻で入力された時、7:40と表示する。 (3)開始時刻12:00から13:00の間の時刻、 終了時刻17:40で入力された時、4:40と表示する。 (4)終了時刻12:00から13:00の間の時刻で入力された時、3:00と表示す る。 (5)(1)~(4)の条件以外は終了時刻ー開始時刻ー休憩時間という計算を 行い、15分単位で丸める。 (1)~(4)の条件は変更なしで、(5)の条件を変えます。 (5)終了時刻が18:15以降、当日勤務時間が7時間40分以上になる。 7時間40分から15分単位で丸める。 <例> 開始時刻9:00、終了時刻17:40の時、勤務時間7時間40分。(定時) 開始時刻9:00、終了時刻18:14の時、勤務時間7時間40分。 開始時刻9:00、終了時刻18:15の時、勤務時間7時間55分。 (一番上に書いたの計算式だと勤務時間が7時間45分になる) 開始時刻9:00、終了時刻18:16の時、勤務時間7時間55分。 ※P13は9:00以前の開始時間を9:00と考えさせる、 12-13時の時間を13時と考えさせる、 上記以外はそのまま表示させるという計算式を書いたセル。 (5)のような条件を加えた計算式が可能であれば教えて下さい。(アドバイス、ヒントでもかまいません。) よろしくお願いします。 使用ソフト:Excel2002

  • Excel:勤務時間の計算がうまくいかない。

    No.1468024の質問をした者です。 勤務表を作成しています。(Excel2002を使用) 終了時刻(D列)ー開始時刻(C列)ー休憩時間(E列)=当日の勤務時間を計算しています。 No.1468024の質問でアドバイスをいただき、以下のような計算式を記述しました。 <例> =AND(C13*D13)*(MIN(IF(AND(D13>="12:00"*1,D13<="13:00"*1),"13:00",D13),"17:40")-MAX(IF(AND(C13>="12:00"*1,C13<="13:00"*1),"12:00",C13),"09:00")-E13+FLOOR(MAX(D13,"18:00")-"17:59:59","0:15")) ほぼうまくいくのですが、開始時刻9:00終了時刻12:00とした場合、勤務時間4:00となり、間違ってしまいます。(正しくは勤務時間3:00。また開始時刻9:00終了時刻が12時から13時までの間の時刻で入力された場合も勤務時間3:00と出力したいです。) 休憩時間セルに以下のような計算式を書いています。 <例> =IF(COUNT(C13:D13)<2,0,IF(D13-"12:00"*1<=0,0,IF(C13-"12:00"*1>=0,0,IF(D13<"18:00"*1,"1:00","1:20")))) 休憩時間は12時から13時までの1時間。 終了時刻が17:40以降なら20分休憩時間が加算されます。 開始、終了が入力されていないと0:00表示。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお願いします。

  • FLOOR関数について

    FLOOR関数を使って勤務時間を計算しているのですが うまく出来ません。 条件) 10分単位で切り捨てする。 例1) 出社時間:20:00 退社時間:22:00 FLOOR("22:00"-"20:00","0:10") 例2) 出社時間:21:00 退社時間:22:00 FLOOR("22:00"-"21:00","0:10") 例3) 出社時間:21:00 退社時間:22:05 FLOOR("22:05"-"21:00","0:10") 出力結果 例1)2時間 例2)50分 例3)1時間 となります。 いろんな時間で試してみましたが、手計算では1時間になる時だけ 50分と出力されます。 例2)の場合、1時間と出力しないのはなぜでしょうか? [補足] 実際はセルを参照して計算しています

  • Excel:勤務時間計の計算式がうまくいかない

    Excel2002を使用し、勤務表を作成しています。 以前こちらでアドバイスをいただき、作成することができました。 今回修正で、開始8:30終了17:05の場合、休憩45分、当日勤務時間7時間 50分と計算させたいのですが、何かアドバイスあればよろしくお願いし ます。 現在使用している計算式では以下のように計算されます。 開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分 開始8:30終了17:05の場合、休憩60分、当日勤務時間7時間35分 ■8時-16時35分(定時)の場合 開始時刻:C列 終了時刻:D列 開始時刻を15分単位で切り上げる:P列:=CEILING(C7,"0:15") 終了時刻を15分単位で切り上げる:Q列:=CEILING(D7,"0:15") ■休憩時間 =IF(COUNT(C7:D7)<2,0,IF((P7<"12:30"*1)*(Q7>"13:15"*1),"0:45","0: 00"))+IF(D7>="16:50"*1,"0:15","0:00") 休憩時間は12:30から13:15までの45分。 終了時刻が16:35以降なら15分の休憩時間が加算。 開始、終了が入力されていないと0:00表示。 ■当日 勤務時間 =AND(C6*D6)*(MIN(IF(AND(D6>="12:30"*1,D6<="13:15"*1),"12:30",Q6), "16:35")-MAX(IF(AND(C6>="12:30"*1,C6<="13:15"*1),"13:15",P6),"08 :00")-IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45","0:00")+FLOOR(MAX (D6,"16:50")-"16:49:59","0:15")) 開始、終了が入力されていないと空白 12:30~13:15の場合は12:30、16:35以降の場合は16:35、それ以外は終 了時刻のまま。 8:00以前は8:00、12:30~13:15の場合は13:15、それ以外は開始時刻の まま。 残業していないケースをIF文を使わずに計算したいため終了時刻が 16:50以前の場合は16:50と補正して、計算結果が00分になるように細工 。 言葉足らずでしたら、進んで補足させていただきますので、よろしくお 願いします。

  • Excel:当日勤務時間の計算式のアドバイスを下さい

    Excel2002を使用し、勤務表を作成しています。 修正を繰り返しだいぶ計算ができるようになりました。 今回は、開始13:15終了16:15の場合、休憩なし、当日勤務時間3時間と計算させたいのですが、何かアドバイスあればよろしくお願いします。 現在使用している計算式では以下のように計算されます。 開始8:30終了17:05、休憩45分、当日勤務時間7時間50分※定時 開始7:30終了16:05の場合、休憩45分、当日勤務時間7時間50分 開始8:00終了16:35の場合、休憩45分、当日勤務時間7時間50分 開始13:15終了17:05の場合、休憩なし、当日勤務時間3時間50分 開始13:15終了17:50の場合、休憩なし、当日勤務時間3時間50分 -------------------------------------------------------- 開始時刻:C列 終了時刻:D列 開始時刻を15分単位で切り上げる:P列:=CEILING(C6,"0:15") 終了時刻を15分単位で切り上げる:Q列:=CEILING(D6,"0:15") 休憩時間を45分として勤務時間を計算する:R列 -------------------------------------------------------- ■休憩時間 =IF(COUNT(C6:D6)<2,0,IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45",IF ((C6>="13:15"*1)*(D6>="17:20"*1),"0:15","0:00")))+IF(R6>="8:00"*1,"0:15","0:00") ■当日 勤務時間 =IF(COUNT(C6:D6)<2,0,IF((C6>="13:15"*1)*(D6>="17:20"*1),R6-"0:15",IF(R6>="8:00"*1,R6-"0:15",R6))) ■休憩時間を45分として勤務時間を計算する =IF(COUNT(C6:D6)<2,0,AND(C6*D6)*(MIN(IF(AND(D6>="12:30"*1,D6<="13:15"*1),"12:30",Q6),"16:05")-MAX(IF(AND(C6>="12:30"*1,C6<="13:15"*1),"13:15",P6),"07:30")-IF((P6<"12:30"*1)*(Q6>"13:15"*1),"0:45","0:00")+FLOOR(MAX(D6,"16:05")-"16:04:59","0:15")))

  • 日報の時間計算を行う関数について

    勤務時間を管理の日報を作成しています。以下の条件をつけて出勤時間と退社時間を記入するだけで1日の総勤務時間を表示してくれる関数をご教示お願いします。 ・9:00出勤で18:00定時退社で15分単位で表示 ・セル(開始)は9:00、(終了)に18:00以降の時間を手入力 ・セル(工数)に関数で総勤務時間を計算 ・9:00から18:00までに1時間15分の休憩をとるため、自動的に差し引いて計算 ・残業は18:15からカウントされるため、18:30以降残業して退社した場合は15分差し引いて計算 ・残業最終時間0:00までとして計算 ・セル(開始)、(終了)に9:00~0:00の15分単位の時間以外を入力はない前提とします ・遅刻、早退による変則時間の入力はない前提とします 【例】 (開始)9:00、(終了)18:00の時は(工数)に7.75 (開始)9:00、(終了)18:15の時は(工数)に7.75 (開始)9:00、(終了)18:30の時は(工数)に8 (開始)9:00、(終了)0:00の時は(工数)に13.5 よろしくお願いします。

  • Excelで、15分単位での時給計算が正しく表示できない

    お世話になります。 15分単位での時給計算を行いたいのですが、15分きっかりの時だけ 下記計算式で出てくる数値が0.25にならず、0.00になってしまいます。 例) 時給千円で、17:00から18:15まで業務したとして、 A1に開始時間、B1に終了時間、C1に勤務時間、 D1に15分単位の値を表示させます。 C1はB1-A1(セルの書式は時刻に設定)、 D1の計算式は =FLOOR(C1,"00:15:00")/"1:00" にしています。 上記勤務時間の場合、D1に1.25と出てほしいのですが 1.00になってしまいます。 15分きっかりの場合でも、0.25と表示させる計算式あるいは 設定をお教えいただけたらと思います。

  • セルの条件付書式で一日の時間管理表を作成

    セルの条件付書式で一日の時間管理表を作成したいと考えています。 セルA2:開始時刻 セルB2:終了時刻 セルC2:7:00~8:00 セルD2:8:00~9:00 セルE2:9:00~10:00 ・ ・ ・ 開始時刻と終了時刻を入力すると、それに対応した時刻のセルの色が表示されるにはどうすればよいのでしょうか? EXCEL2003

  • 勤務表の始業・終業時刻を30分単位に

    いろいろな始業・終業時刻に対応できる、30分単位で自動計算されるエクセル勤務表を作成しています。 例えばA1セルに定時開始時刻の「8:40」B1セルに定時終了時刻の「17:10」と記入し、そこを基準に毎日の始業時間を30分単位で丸めたいときにはどのようにすればよいのでしょうか? 定時は変更されることがあるので、A1とB1セルを変更してもそこを起点に30分単位で丸められるような勤務表を作りたいです。 A列に実際のタイムカード始業時刻 B列に実際のタイムカード終業時刻 C列に、A列の時刻をA1セルの時間を基準に30分単位で丸めたもの D列に、B列の時刻をB1セルの時間を基準に30分単位で丸めたもの 勤務時間、残業時間等は、D列とC列の時間を使って計算します。 FLOOR関数は0:00を基準とする丸め関数ですよね? いい方法がありましたら、よろしくお願いします。

  • 給与計算のFLOOR関数について

    Exelでの給与計算について教えてください。 10分単位で残業をつけています。 時間外手当を計算するのにFLOOR関数を使いたいのですが、 退社定時 12:30 実際退社 12:40 の場合 差を出してから =FLOOR(○,"0:10")と入力すると 「0:00」と表示されてしまいます。 10、20と区切りがいい場合、10分足りない表示になってしまうのですが、 何か改善方法があれば教えてください。 よろしくお願いいたします。

専門家に質問してみよう