- ベストアンサー
エクセルIF関数についての解説
- エクセルのIF関数について詳しく教えてください。
- 給料の計算方法についてのエクセルの設定方法を教えてください。
- 出勤時間と退社時間を使って実労働時間を計算し、一日の支給額を表示する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
時間の入力は日付から入力しましょう。でないと日付を跨いだ時に計算が破綻します。 ■本題 =MIN(C2,"5:00:00") これで5時間を超えた場合でも5時間までの値を取り出せます。 一律って事だから不要かな? =MAX(C2-"5:00:00",0) これで5時間を超えた時間を取り出せます。 ただし、時間はシリアル値という、24時間を1とした数値になっています。 5時間なら 5/24 ≒ 0.208633 になっています。 時間単位の数値に直すのであれば 24倍しましょう。(5÷24×24 ってこと) =MIN(C2,"5:00:00")*24 =MAX(C2-"5:00:00",0)*24 残業した時間を 15分単位で区切るなら、時間を 4倍して、小数点以下の値を切り捨てて、もう一度 4で割ればいい。 小数点以下の値を切り捨てる方法はたくさんあります。 四捨五入する関数を使用する(ROUNDDOWN関数を使う) 整数化する(INT関数を使う) 4倍することなく FLOOR関数でもいいでしょう。 =FLOOR(MAX(C2-"5:00:00",0),"0:15")*24 あとは、時間が入力されていなければ空白を表示して、時間が入力されていれば計算をするように IF関数を使って記述すればOK。 IF(C2="","",8000+FLOOR(MAX(C2-"5:00:00",0),"0:15")*24*1700) とか まあ、C2セルには IF(COUNT(A2:B2)=0,"",B2-A2) などとしておくと良いでしょう。 ※ 実際にこの関数式の動作を確認していませんので、正しい動きをしなくても怒らないでください。
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号:ANo.1です。 申し訳御座いません、(2)の条件を勘違いをしておりました。 1700円を掛けるのは、「実労働時間全て」ではなく、「5時間を超えた分の時間」に対してでした。 その場合の数式は、 =IF(C2>0,IF(C2>"5:00"*1,8000+1700*FLOOR(C2-"5:00","0:15"*1),8000),"") 或いは、 =IF(C2>0,8000+1700*FLOOR(C2-"5:00","0:15"*1)*(C2>"5:00"*1),"") になります。
お礼
そのままコピーして貼付すると 計算がうまくいかず おそらく私が言葉不足で 伝えきれていないのでしょうか。 ご丁寧にご回答頂いたのに 申し訳ございません。 本当にありがとうございました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>現在、出勤時間を入力するA2 退社時間を入力するB2 それを引き算にてC2に実労働時間を表示しています。 それだけでは、休憩時間も実労働時間に含めている事になり、一般的な労働時間の計算方法(休憩時間は差し引く)とは異なりますが、それでも宜しいのでしょうか? 宜しく無い場合には、補足欄等を使用して、何時から何時までが休憩時間となっているのかをお知らせ願います。 尚、もしも、休憩時間が存在しない等の理由で、退社時刻から出勤時刻までの時間が全て労働時間である場合には、(1)(2)の条件で一日の支給額を求める関数の例は次の様なものになります。 =IF(C2>0,IF(C2>"5:00"*1,8000+1700*FLOOR(C2,"0:15"*1),8000),"") 或いは、上記の数式を次の様に変形する事も出来ます。 =IF(C2>0,8000+1700*FLOOR(C2,"0:15"*1)*(C2>"5:00"*1),"")
補足
すみません。 言葉足らずでした。 休憩に関しては、休憩がある場合とない場合がある為、 ある場合は、別セルに入力し、 実労働時間のセルに 退社時間-出社時間-休憩時間 を計算しています。 わかりにくくて すみません。
お礼
記入頂いた関数を そのままコピーして使わせて頂くと 正しい計算がされました。 ありがとうございました。