- ベストアンサー
EXCELの計算式
賞与の健康保険、厚生年金の計算式です。 これをもっと単純化することはできますか? =if(rounddown(賞与金額,-3) * 保険料率/2)- trunc(rounddown(賞与金額,-3) * 保険料率/2) >= 0.51,trunc(rounddown(賞与金額 ,-3)* 保険料率/2) + 1 ,trunc(rounddown(賞与金額,-3) * 保険料率/2)
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>賞与金額は1000円未満切捨て、そこに保険料率を掛けます。 >それを1/2して、端数が50銭以下の場合は切り捨て、50銭を超える場合は切り上げて1円という式です。 課税対象は1000円未満を切り捨てなのでROUNDDOWN関数で桁数を-3にすれば目的に合います。(TRUNC関数も同様なのでどちらでも良いでしょう) 保険料率を乗じた半分を四捨五入ならROUND関数で良いのですが微妙に違うので工夫が必要です。 =ROUND(TRUNC(賞与金額,-3)*保険料率/2-0.0001,0) =TRUNC(TRUNC(賞与金額,-3)*保険料率/2+0.4999) ROUND関数は丸める桁数を指定する必要があり、TRUNC関数は桁数を省略すると正数に丸めます。(小数点以下切捨て)
その他の回答 (2)
- bunjii
- ベストアンサー率43% (3589/8249)
>賞与の健康保険、厚生年金の計算式です。 提示の計算式は何処から写しましたか?(数式の構成に誤りがある) 下記の構成になっていません。 =IF(倫理式,TRUEのときの数式,FALSEのときの数式) また、TRUNC関数とROUNDDOWN関数は同じ処理をしますので何のために入れ子にしているか理由が分かりません。 私は保険料計算方法を知りませんので具体的な数値を示した計算式を提示してください。(賞与額がx円未満のときの数式とx円以上のときの数式) 尚、賞与の金額に対する保険料率のランクが有れば、その条件も提示してください。
補足
賞与金額は1000円未満切捨て、そこに保険料率を掛けます。 それを1/2して、端数が50銭以下の場合は切り捨て、50銭を超える場合は切り上げて1円という式です。 例) 12,345.50円 ⇒ 12,345円を控除します。 12,345.51円 ⇒ 12,346円を控除します。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
=round(rounddown(賞与金額,-3) * 保険料率/2-0.01) その式のやりたいことは【rounddown(賞与金額,-3) * 保険料率/2】の値の少数以下が0.51以上なら切り上げ、それ以外は切り捨てるのですから 計算した結果に0.01を引いて四捨五入すれば良い 計算結果が1.5なら1.5-0.01=1.49となり四捨五入すれば1
補足
最後の0.01に対して「この関数に対して、少なすぎる引数が入力されています」と出ます。
お礼
ありがとうございます! とてもすっきりしました。