• ベストアンサー

エクセルの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% (7987/21354)
回答No.1

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

aya_y_pis
質問者

お礼

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

関連するQ&A

  • エクセルで有効桁を指定して丸める

    以前、↓↓にて http://oshiete1.goo.ne.jp/qa1345491.html 「excelで普通に四捨五入をするとなると  『ROUND』などで小数点以下の桁数を指定しますよね。  そうではなく、有効桁数3桁で四捨五入…例えば、  0.1234ならば0.123  1.234ならば1.23  12.34ならば12.3  123.4ならば123…のように  数字を四捨五入させる関数(?)はあるのでしょうか。」 と質問し、 =ROUND(A1,-INT(LOG(A1))-1 + 3) とか =VALUE(TEXT(A1,"0.00E+00")) といった方法を教えていただいたのですが、 0.1234 なら 0.123 ・・・ 123.4 なら 123 までは同じなのですが、 1234.5 なら 1230ではなく1235 12345.6 なら 12300ではなく12346 つまり、1000未満の場合は以前と同じく有効数字3桁で 1000以上の場合は小数点以下四捨五入としたい場合は、 IF関数で =IF(1000>A1 ・・・のように条件指定してやるしかないのでしょうか。 (A1の部分にも長々した数式が入るもので) 数式がかなり長くなってしまい、見づらいので なにか良い方法があればと思ったのですが…

  • ROUND関数

    %表示で少数第1位未満を四捨五入しなさいという解答欄のセルに、85.1%という数字が入力されています。 数式を見てみると、=ROUND(D4/C4,3)になっています。 =ROUND(数値、桁数)にはずなのに、なぜ3という数字が入っているのか分かりません。なぜでしょうか?

  • IF関数とROUNDの組み合わせが上手くいきません。

    初級者ですが、仕事で必要なので助けてください。 エクセル2003で、A1~F1の数字を掛算割算して、結果をG1に反映します。G1の計算結果が9万9千9百までは10の位まで四捨五入、10万以上なら100の位を四捨五入というふうにしたいのですが、どうも上手くいきません。(そもそもIF関数では無理なのでしょうか?) =IF(G1>=99999,ROUND(A1*B1/C1*D1*F1,-3),G1<=100000,ROUND(A1*B1/C1*D1*F1,-4)) この式をちょっと変えたりして色々試してみているのですが、-3,-4の設定で10の位、百の位は変えられても99999/100000の間では変化してくれません。どうすればよいのでしょうか。

  • エクセルで有効桁を指定して丸めることは出来る?

    excelで普通に四捨五入をするとなると 「ROUND」などで小数点以下の桁数を指定しますよね。 そうではなく、有効桁数3桁で四捨五入…例えば、 0.1234ならば0.123 1.234ならば1.23 12.34ならば12.3 123.4ならば123…のように 数字を四捨五入させる関数(?)はあるのでしょうか。

  • IF関数についてです

    エクセル初心者です。 わかりづらかったらすいません。 たとえば A1*B1の結果をF1へ。 C1+D1+E1の結果をG1へ。 で、F1+G1の結果をH1へ。 という表を作っています。 で、結果が0の時に空白を返したいので、それぞれを IF(A*B=0、””、A*B)として、 IF(C1+D1+E1=0、””、C1+D1+E1)としています。 最後にF1+G1の結果も0、もしくは空白の時に空白を 返したいのですがどのように数式を入れればよいのでしょうか。 自分なりにいれてみましたがエラーがでてしまいます。 よろしくお願いいたします。

  • EXCEL 関数

    例えば =(E3-AVERAGE($E$3:$E$13))*10/STDEVP(E$3:E$13)+50 この数式の入った値は52.00187764 なのですが、これを四捨五入するROUND関数を使うとすればどのような数式になるか教えて欲しいのですが、先頭にROUNDをつけると()カッコの付け方等いまいちよくわかりません。 小数点第2位で四捨五入です。

  • エクセルの関数。お願いします!

    任意の桁数で四捨五入するROUND関数についてお願いします。 A1「5678.492」の数値。 (ア)小数点以下を四捨五入しなさい。 (イ)1の位を四捨五入しなさい。 =ROUND(A1,○)の○には何が入るんでしょうか?

  • エクセルのROUND関数(金額によって違う四捨五入)

    エクセルのROUND関数に関して質問があります。 下一桁を四捨五入するやり方については、 ROUDN(-1)で出来ることはわかっています。 100円台は下一桁(1円単位)のみ四捨五入し、 1万円台は下2桁(10円単位)まで四捨五入するという やり方を同じセル上でやりたいのですが、方法はありますでしょうか? ご回答宜しくお願いします。

  • ExcelのROUND関数の使い方

    =JIS((67/60)/(680*680)) と入力すると、 =2.414936562860・・・となります。 そこにROUND関数を挿入すると、 =JIS(ROUND((67/60)/(680*680),2)) と入力します。 =0 になってしまいます。 =0.0000024149・・・になります。 ROUNDを挿入して=2.41というように四捨五入させたいのですが、 数式の入力方法が間違っているのでしょうか? 正しい式を教えてください。

  • round関数について

    試しにエクセルで次の計算をしてみてください。 -16.76 7.9 -11.45 -8.88 -1 4.26 33.78 以上を全部足します。つまり「=sum(a1:a7)」です。当然「7.85」になります。 次に四捨五入します。round関数で小数点第2位を四捨五入して、第1位まで表示させます。つまり、「=round(sum(a1:a7),1)」ということです。すると「7.8」を返しました。 ん?「7.9」なのでは?と思い、次にこんな計算をしてみました。 A・・・=round(sum(a1:a7),2) B・・・=round(A,1) つまり、Aでいったん小数点第3位を四捨五入させた上で、その値を今度はBで小数点第2位を四捨五入させ、最終的に小数点第1位まで表示させたわけです。すると、ちゃんと「7.9」を返しました。 なんでこんな風になるのでしょうか?どうして一発で「7.9」にならないのでしょうか?

専門家に質問してみよう