• ベストアンサー

エクセルIF関数について

セルA1に残業時間、B1に賃金があります。 残業時間が50時間なら50×(B1÷160×1.25)、 残業時間が50時間超なら50×(B1÷160×1.25)+50h超×(B1÷160×1.3) という計算結果を出したいのですが IF関数でどのようにすればいいのでしょうか。 お分かりの方、宜しくお願いします。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.5

>下記計算式でROUNDUPを入れるにはどうしたら(どこに入れるか)よいのかお分かりでしょうか。 就業規則または労働協約に規定されているはずですからそれに従ってください。 質問の内容からは時給=基準賃金(月額?)÷160のようですが時給で丸めても残業時間数と割増率で端数が出ます。 また、残業時間が1時間未満の端数をどのように扱うかも規定されていると思います。 従って、一般的には支給額算出の最終段階で端数を繰り上げることになるでしょう。 更に、繰り上げ対象の桁を規定しているかも知れませんので確認が必要でしょう。 これらのことはExcelの使い方の問題ではなく計算方法の問題ですから規定された事項に従って適宜使ってください。 =ROUNDUP(数式,桁数) 桁数は0のとき整数1位に丸めますので1円未満を繰り上げとなります。 桁数が-1のとき10円未満を繰り上げます。

thebun
質問者

お礼

何度もありがとうございました。

thebun
質問者

補足

説明不足ですみません。 時給単価のみ端数切り上げです。 下記計算式でROUDUPをどう入れたらいいのか お分かりでしたらお願いいます。 IF(D63>50,50*(E63/160*1.25)+(D63-50)*(E63/160*1.3),D63*(E63/160*1.25))

その他の回答 (5)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.6

>時給単価のみ端数切り上げです。 「端数切り上げ」→「端数繰り上げ」 端数を取り去って目的の桁数にすることを「端数切捨て」と言います。 端数に補数を加えて繰り上げることを「端数繰り上げ」と言います。 「時給単価」→「時給」 時給は時間当たりの給料を指しますので単価の意味が含まれています。 時給とは割増前の時給のことですよね? また、1円未満を繰り上げで良いでしょうか? 下記の部分を修正してください。 E63/160 → ROUNDUP(E63/160,0) 割増後の時給のとき E63/160*1.25 → ROUNDUP(E63/160*1.25,0) E63/160*1.25 → ROUNDUP(E63/160*1.3,0) 蛇足ですが割増前の時給を端数繰り上げのときは次の式で良いと思います。 =(MIN(D63,50)*1.25+MAX(D63-50,0)*1.3)*ROUNDUP(E63/160,0)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

>こちらの計算式でROUND関数を使い残業単価の端数切り上げ処理をしたいのですが ROUND関数は四捨五入です。 「繰り上げ処理」のときはROUNDUP関数です。 使い方は以下のとおりです。 小数点以下に端数が有るとき大小に係わらず繰り上げるには次のようになります。 =ROUNDUP(計算式,0) 四捨五入のときはROUND関数に置き換えるだけで良いでしょう。 >お分かりになりますでしょうか? 「ROUND関数を使い残業単価の端数切り上げ」と言う意味が分かりません。

thebun
質問者

補足

失礼しました。ROUNDUPの間違いでした。 下記計算式でROUNDUPを入れるにはどうしたら (どこに入れるか)よいのかお分かりでしょうか。 宜しくお願いします。 =IF(D63>50,50*(E63/160*1.25)+(D63-50)*(E63/160*1.3),D63*(E63/160*1.25))

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

後半だけIFで有り無しした方が簡単と思います。 それから、A1の残業時間は簡単のため「時間単位の数値」で計算済みとします。 =A1*B1/160*1.25+IF(A1>50,(A1-50)*B1/160*0.05) ちなみにMAX/MIN関数を使って =A1*B1/160*1.25+MAX(0,(A1-50)*B1/160*0.05) でもいいです。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>IF関数でどのようにすればいいのでしょうか。 IF関数よりMAX関数とMIN関数の組み合わせの方が良いと思います。 =(MIN(A1,50)*1.25+MAX(A1-50,0)*1.3)*B1/160 尚、1円未満の端数が出た時の処理も必要です。 繰り上げのときはROUNDUP関数、四捨五入のときはROUND関数、切り捨てのときはROUNDDOWN関数で端数処理をすると良いでしょう。

thebun
質問者

補足

せっかくご提案していただいて申し訳ないのですが 下記計算式でできました。 こちらの計算式でROUND関数を使い残業単価の端数切り上げ処理をしたいのですが お分かりになりますでしょうか? =IF(残業h>50,50*(賃金/160*1.25)+(残業h-50)*(賃金/160*1.3),残業h*(賃金/160*1.25)) よろしくお願いします。

回答No.1

  =if(B1>50,(50/160*1.25+(B1-50)/160*1.3,B1/160*1.25)  

関連するQ&A

専門家に質問してみよう