こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの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とする方法が分から
ず困っています。桁数が違う場合には手入力で四捨五入の桁数を変えれ
ばよいのでしょうが、それだと手間がかかる上に桁数の変更を忘れてし
まうことがあり、間違いのもとなので、間違いにくい方法で数式を組み
たいのです。
詳しい方、解決方法があれば回答お願い致します。

投稿日時 - 2008-09-22 16:08:46

QNo.4348263

困ってます

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

こんにちは

補足説明をお願いします

つまり
1~999までなら、下2桁四捨五入
1000~9999までなら下3桁四捨五入とか

数字の桁数に応じて四捨五入の位置が変わるということですか?

う~ん、できなくなさそうだけど、一つの関数で収めようとすると
ずいぶん大変なことになりそうな気が・・・

必ず頭3桁目で丸めたいということであれば

=-LEN(F1) みたいにして、数字の長さを求めて

それに - をつけて、残したい数を2とかに設定して

=ROUND(F1,-len(F1)+2)

とかもできるけどねぇ・・あんまりスマートじゃないな

投稿日時 - 2008-09-22 16:34:38

補足

つまり
1~999までなら、下2桁四捨五入
1000~9999までなら下3桁四捨五入とか

数字の桁数に応じて四捨五入の位置が変わるということですか?

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

投稿日時 - 2008-09-22 16:52:12

ANo.3

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(5)

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

投稿日時 - 2008-09-22 20:26:33

お礼

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

投稿日時 - 2008-09-24 14:47:02

ANo.4

No3です

>12,345を下3桁で四捨五入→12,000と
>2,000ではその数字に対する四捨五入での数値の変動幅が全然違うので、
>数字の桁数に応じて四捨五入の

これだと私のアイデアはダメですね

今回の件を実装するには、一つの関数で一発で完結させるのではなく
セルの別の領域をつかった方がいいと思います。

つまり
レンジ
1 ~ 100 までなら ○桁目
101~2000までなら ○桁目
みたいな四捨五入するところをターゲットにする表を別で作っておく

そして、F1の数字が、表のどこに該当し、何桁目で四捨五入するのかを
引っ張ってくる関数を実装する


そしてその数字をRound関数の中に埋め込む

というのがいいんじゃないかと思います。

複雑な式は、なんかかっこよかったりするんですけど
結果的後から条件が変わって大変なことになったり
仕事を後輩に引き継いだときには意味不明な式になってたりと
使えなくなること多いです

投稿日時 - 2008-09-22 17:42:32

お礼

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

投稿日時 - 2008-09-24 14:44:36

ANo.2

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

投稿日時 - 2008-09-22 16:24:10

お礼

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

投稿日時 - 2008-09-22 17:02:15

ANo.1

ROUND(F1/E1,-2)の中の「-2」の部分を例えば
ROUND(F1/E1,IF(F1>10000,-2,-1))のようにすれば済むだけでは?

条件付書式などでごまかす手もありそうですけど、素直に演算式で
明示したほうが、後のメンテナンスがラクではないかと。

投稿日時 - 2008-09-22 16:21:18

お礼

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

投稿日時 - 2008-09-22 17:31:41

あなたにオススメの質問