• ベストアンサー

エクセルのROUND処理について教えて下さい。IF関数で条件指定

詳しい方、教えて下さい!! エクセルで見積書を作成していて、素人ながら一応数式を入力して金額 が算出できるようにしています。その中で、ROUND処理をIF関数で条件 を指定した中で異なる桁数の数字に行いたいのですが、どうすればよい か分からず試行錯誤しています。 つまり、    A  B  C   D     E    F    G 1  1.0 式 空白 106,300 80% 85,000  85,000 2 89.0 m 1,900 169,100 80%  1,500 133,500 というデータで、 Cのセルには=IF(OR(A1=1,A1="",F1=""),"",ROUND(F1/E1,-2)) Dのセルには=IF(OR(A1="",E1=""),"",IF(A1=1,ROUND(F1/E1,-2),A1*C1)) Gのセルには=A1*F1 の数式の結果がそれぞれ入っています。 見積として客先に提出するため、Aのセルが1の場合はCのセルを空白に してDのセルにのみ数式の結果が出るようにしたいのです。 が、F1のセル(5桁)とF2のセル(4桁)のように数値の桁数が違う場合 に、四捨五入を行う桁数をそれぞれにF1=-2、F2=-1とする方法が分から ず困っています。桁数が違う場合には手入力で四捨五入の桁数を変えれ ばよいのでしょうが、それだと手間がかかる上に桁数の変更を忘れてし まうことがあり、間違いのもとなので、間違いにくい方法で数式を組み たいのです。 詳しい方、解決方法があれば回答お願い致します。

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

  • ベストアンサー
  • come2
  • ベストアンサー率32% (594/1811)
回答No.3

こんにちは 補足説明をお願いします つまり 1~999までなら、下2桁四捨五入 1000~9999までなら下3桁四捨五入とか 数字の桁数に応じて四捨五入の位置が変わるということですか? う~ん、できなくなさそうだけど、一つの関数で収めようとすると ずいぶん大変なことになりそうな気が・・・ 必ず頭3桁目で丸めたいということであれば =-LEN(F1) みたいにして、数字の長さを求めて それに - をつけて、残したい数を2とかに設定して =ROUND(F1,-len(F1)+2) とかもできるけどねぇ・・あんまりスマートじゃないな

aya_y_pis
質問者

補足

つまり 1~999までなら、下2桁四捨五入 1000~9999までなら下3桁四捨五入とか 数字の桁数に応じて四捨五入の位置が変わるということですか? そういうことです。例えば、12,345を下3桁で四捨五入→12,000と 2,345を下3桁で四捨五入→2,000ではその数字に対する四捨五入で の数値の変動幅が全然違うので、数字の桁数に応じて四捨五入の 位置を変えたいのです。 教えて頂いた方法も試してみます。ありがとうございました!!

その他の回答 (4)

noname#204879
noname#204879
回答No.5

セル A1 の 100以上の整数を、四捨五入によって、左から3桁目以右を0にしたいのなら、=ROUND(A1,3-LEN(A1)) で如何かと。

aya_y_pis
質問者

お礼

ありがとうございます!!アドバイス頂いた方法で試してみます。 役に立つ情報ありがとうございました。

  • come2
  • ベストアンサー率32% (594/1811)
回答No.4

No3です >12,345を下3桁で四捨五入→12,000と >2,000ではその数字に対する四捨五入での数値の変動幅が全然違うので、 >数字の桁数に応じて四捨五入の これだと私のアイデアはダメですね 今回の件を実装するには、一つの関数で一発で完結させるのではなく セルの別の領域をつかった方がいいと思います。 つまり レンジ 1 ~ 100 までなら ○桁目 101~2000までなら ○桁目 みたいな四捨五入するところをターゲットにする表を別で作っておく そして、F1の数字が、表のどこに該当し、何桁目で四捨五入するのかを 引っ張ってくる関数を実装する そしてその数字をRound関数の中に埋め込む というのがいいんじゃないかと思います。 複雑な式は、なんかかっこよかったりするんですけど 結果的後から条件が変わって大変なことになったり 仕事を後輩に引き継いだときには意味不明な式になってたりと 使えなくなること多いです

aya_y_pis
質問者

お礼

ありがとうございます!!別の領域のセルを使用する方法も考えたのです が、これだと表の幅が横に広くなりすぎ、後で見づらいというのが難点 のようです。見積等作成の場合、画面での入力時に表がみやすいかどう かはかなり重要なので・・・。 最初に教えて頂いた方法を試してみたところ、確かに数式は複雑になり ますが、表をPCの画面で見たときに別領域を使う方法よりも見やすとい うのが良い点なので、こちらの方法をしばらく試してみようかと思いま す。役に立つ情報ありがとうございました!!

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

LOG関数で、その数字が何桁なのかを調べることができますよ。

aya_y_pis
質問者

お礼

LOG関数は使った事がないですが、試してみます。 ありがとうございました!!

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.1

ROUND(F1/E1,-2)の中の「-2」の部分を例えば ROUND(F1/E1,IF(F1>10000,-2,-1))のようにすれば済むだけでは? 条件付書式などでごまかす手もありそうですけど、素直に演算式で 明示したほうが、後のメンテナンスがラクではないかと。

aya_y_pis
質問者

お礼

ありがとうございます。 演算式を使うのも考えたのですが、数式がかなり長くなるので一度却下 してしまいました。 が、数式を一度組んでみます。ありがとうございました!!

関連するQ&A