• ベストアンサー

エクセルIF関数について

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

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答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/8248)
回答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/8248)
回答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/7940)
回答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/8248)
回答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

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • excelのIF関数について質問です。

    勤怠管理を個人的に作成しているのですが、残業・深夜残業を計算する際に関数でつまづいたので教えて頂けると幸いです。 Aの勤務時間が22時を超えていない時は「A-B(定時)」、22時を超えてる時は「A-22:00」で、 休日で入力されておらず、エラー表示になるセルに関しては空欄になるようにする場合どのようなIF関数を組み合わせればいいでしょうか? =IF(ISERROR( ),"", ) を使うのかとは思うんですが、どこにどのようにIFを追加すればいいのかわからず。 どなたかご教授お願いします。

  • エクセル関数について(IF関数)

    エクセルの関数について教えて下さい。 セルに1と入力した場合Aと出てきて、2と入力した場合B、3と入力した場合Cとなるような計算式を入れたいのですが、どのような式を入れればよろしいのでしょうか? 別のシートから呼び出す(?)というような方法でもいいのですが、どんな式を入れればよいのか、全く分かりません。 自分で調べてみた結果、IF関数を用いるということは解りました。 『IF(A1="1","A",IF(A1="2","B",IF(A1="3","C")))』 上記のような式を入れてみて、実際に実践してみたところ、結果としては入力した数字が表示されるだけで、計算式は消えてしまいました。 どうしたらいいのか解りません。 素人故に恥ずかしい質問ですが、お知恵を貸して下さい。 よろしくお願いします。

  • excelのand関数、IF関数について

    エクセルのand関数、IF関数について質問です。 非常に簡単なことで申し訳ないのですが、仮にセルA2が5でかつセルB2が0の時にtrueとしたいときの関数は=and(A2=5,B2=0)であっているでしょうか。また、これをIFの関数で表す場合、=IF(A2=5,IF(B2=0,1,0),0)で同じ意味になるでしょうか?(IFの方は条件を満たす場合を1、満たしていない場合を0としたつもりです) ANDの方の関数は、多分合っていると思うのですが…。エクセルに入力しても、正しい結果が得られなかったので、質問させていただきました。初心者です。つまらない質問で申し訳ないのですが、よろしくお願いします。 

  • Excel 長すぎるif関数

    こんにちは。Excelを使って、条件によって表す表示を変える場合、 例えばa1のセルには0~100までの任意の数字を入れるとして、b1のセルにa1の数字に応じていろいろな表示をしたい場合(具体的には100ならAを表示、90~99ならB、70~89ならC、55~69ならD・・・といったように)、if関数を使うと思いますが、 =if(a1=100,"A"1,if(a1>=90,"B",if(a1>=70,"C",if・・・・)))というように長々と続きますね。条件が少ないうちはいいのですが、条件が多くなると、大変複雑な式になり、入力もしづらいし、頭も使うし、閉じる括弧の数もわからなくなるし、作成に時間もかかりますよね。2つ以上の条件が重なる(例えばA1が90~99の範囲でかつa2がAならb1にB1と表示するなど)など複雑になってくるともうお手上げです。 これらを短時間で要領よく作成する方法はないでしょうか?次の観点で教えてください。 1 if以外の良い関数はあるか?または良い機能はあるか?それとも複雑であってもif関数が妥当なのか? 2 (if関数が妥当であるとして)複雑なif文の作成を簡単にできる方法があるか?あるいはそんなソフトがあるか? 3 やっぱりそういうのはVBAとかで作った方がいいのか?(できれば使いたくないのですが。)

  • if 関数について

    「もし、セルa1に何かの数値が入力されたら、a1×b1を計算して、その結果を表示せよ」という場合の関数は、=IF(a1="","",a1*b1)だと思います。 この数式を下方のセルにコピーすると=if(a2="","",a2*b2)となってしまいますが、計算式の+a1×b1の部分を変えたくない場合は、どうすればよいのでしょうか? 【この関数式の使用方法】 毎日変動する株価による自分の利益(又は損失)を一覧表にしたい。 a1の数値は、毎日変動する株価です。(だから、コピー結果a2 a3 a4 と変化しても良い。) b1の数値は、自分の所有する株数です。(株の所有数は変わらない) 従って、変動するのは毎日の株価と計算結果だけということになり、自分の所有株数(b1の値)が入力されているセルの場所が変わっては困るのです。 以上、よろしくお願いいたします。

  • エクセル IF関数について

    エクセルのIF関数で困っています。 A1のセルは、他のセル(B1)から飛ぶような設定をしている(=B1) B1に入力しない事があるで、A1の「0」に表示しないようにユーザー設定で「#,##0;"△ "#,##0; 」としている。 A2のセルには、A1に文字が表示されたときのみ「日」と表示するようにIF関数を入れた。「=IF(A1="","","日")」 しかし、A1に何も表示されていないのに、「日」が表示されてしまう。 試しに「=IF(A1="0","","日")」としたが、これでも「日」が表示されてしまう。 このような場合、IF関数はどうすればいいのでしょうか。 説明が下手ですいません。 どうか教えてください。

  • IF関数について教えて下さい

    入力セルB1には数値0~9と”ヌル”が入ります。 セルB2でA1+B1の計算 B2の計算条件は、B1が””の時””が出力 B1が0(数値のゼロ)の時数値のゼロが出力 B1が1~9の時はA1+B1の演算をさせたいのですが、IF関数でできますか 関数の組み方をお願いします。

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

  • エクセル2003 関数 IFとVlookupの組み合わせについて

    エクセル2003 関数 IFとVlookupの組み合わせについて IF関数とvlookuo関数を組み合わせて関数を組もうとしています。 vlookupしたい元データが18万あるのでシートを(1)~(3)に分けています。 やりたいことは、 シート「(1)1~60,000」     A列:ID B列:社名 シート「(2)60,001~120,000」 A列:ID B列:社名 シート「(3)120,001~180,000」 A列:ID B列:社名 シート「集計」 このシートに関数の結果を表示したいです シート「集計」のH9のセルにIDを入れたらI9のセルに社名が自動表示される。且つH9のセルが空欄ならI9のセルも空欄になる。※入るIDはシート(1)~(3)のどこかにあります 関数教えて下さい。よろしくお願いします。

専門家に質問してみよう