• ベストアンサー

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の間では変化してくれません。どうすればよいのでしょうか。

noname#30850
noname#30850

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

  • ベストアンサー
noname#17648
noname#17648
回答No.1

=IF(G1<=99999,ROUND(A1*B1/C1*D1*F1,-3),ROUND(A1*B1/C1*D1*F1,-4))

noname#30850
質問者

お礼

おぉ、できました。意外に単純な解決法でしたね(笑)ありがとうございます。

その他の回答 (2)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.3

質問が重複していたようですが、消されたようですね 再度回答します。 =ROUND(G1,-3-(G1>=100000)) とか =ROUND(A1*B1/C1*D1*F1,IF(A1*B1/C1*D1*F1<10000,-3,-4)) No.2 さんの回答では 10000以上1000000未満に対応 LOG10 を使用するなら =ROUND(A1*B1/C1*D1*F1,IF(LOG10(A1*B1/C1*D1*F1)<5,-3,-4))

noname#30850
質問者

お礼

クリックするときちょっと指がビビビッとなってしまって…「うわぁ~!」と思いつつ画面を閉じました(^^; 削除されててよかった…しかしsige1701様には再度書き込み頂いて恐縮です。 へ~ぇ、いろんな方法があるんですねぇ。LOG10の使い方も一緒に教えてくださりありがとうございます。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

=ROUND(A1*B1/C1*D1*F1,INT(3-LOG10(A1*B1/C1*D1*F1)))

noname#30850
質問者

お礼

ろ、LOGとは?また勉強しなきゃ…参考にさせて頂きます。ありがとうございます。

関連するQ&A

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

  • 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」にならないのでしょうか?

  • エクセルの関数を複数使いたい

    こんにちは、教えてください エクセルの関数を同時に複数使いたいときはどうしたらよいのでしょうか? 具体的には A1とA2を掛けて1000で割りたものをC1に表示させたいのです。 ただし、 (1)計算をしていないときにはC1に何も表示させたくない。 (2)小数点以下2桁で四捨五入したいのです。 (3)計算式をいったん別のところに表示させず、直接C1にだしたい。 以上の条件をかなえたいのですが、掛け算・割り算の式や、表示の条件を変えるのにIFを使用したり、四捨五入をするのはROUNDを使うのは発想できたのですが、組み合わせ方が分かりません。(表示形式で設定してしまうと、0.20などの際に0.2とはならないので・・・関数を使いたいのです) よろしくお願いします

  • 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、もしくは空白の時に空白を 返したいのですがどのように数式を入れればよいのでしょうか。 自分なりにいれてみましたがエラーがでてしまいます。 よろしくお願いいたします。

  • ROUND関数で、四捨五入ができない。

    ROUND関数で、四捨五入ができない。 カラムの値が'8.5'の場合'9'になるはずなのですが、'8'となってしまいます。 解決方法ありますでしょうか? '4.5''6.5'の場合でも、四捨五入ができないです。 SELECT カラムA,ROUND(カラムA) FROM テーブル ----------------------------------------  カラムA |  ROUND(カラムA) ----------------------------------------   5.5   |   6          ←四捨五入ができている ----------------------------------------   8.5   |   8          ←四捨五入ができない ----------------------------------------   4.5   |   4          ←四捨五入ができない ---------------------------------------- XAMPP 1.7.3の MySQL 5.1.41を使用しています。

    • ベストアンサー
    • MySQL
  • エクセルのROUND関数について

    小数点以下を四捨五入して整数にするには,例えば ROUND(1.52,1) なら,2になると思うのですが, ROUND(1.52,01) としても2となります. 1としても0.1としても結果は必ず等しくなるのでしょうか? よろしくお願いします.

  • IF関数

    IF関数で下記のような式を作って見ましたがうまく答えが返ってきません。 条件は P9<=135416 の時は(P9-117501)×0.05 135417<=P9<=149999の時は(P9-(P9×0.4+63334))×0.05 150000<=P9<=299000の時は(P9-(P9×0.3+78334))0.05 で、一の位を四捨五入します。 135417以上になると0の答えが返ってきます。 式は次の通りです。 =IF(P9<=135416,ROUND((P9-117501)*0.005,IF(135417<=P9<=149999,ROUND((P9-(P9*0.4+63334))*0.005,IF(150000<=P9<=299000,ROUND((P9-(P9*0.3+78334))*0.005,0))))))*10 どこが間違っているのでしょか?宜しくお願いします。

  • ROUND関数

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

  • IF関数を短くする方法(階層が深すぎる)

    A列に任意の数値が入っています。 そのときB列に、 「A1<999」なら「A1×5.0」して四捨五入 「1000<A1<2000」なら「A1×4.0」して四捨五入 「2000<A1<3000」なら「A1×3.0」して四捨五入 「3000<A1<4000」なら「A1×2.0」して四捨五入 「4000<A1<5000」なら「A1×1.5」して四捨五入 「5000<A1<6000」なら「A1×1.0」して四捨五入 とした計算式を入れたいとおもってます。 IF関数にするとものすごく長くなってしまいます。 短くしたり、他に適応する関数はあるでしょうか? よろしくお願いいたします。

  • エクセルのROUND関数で・・

    エクセルの関数を使って計算してるんですが、答えが合わないんです。 =ROUND($B31*$D31,2) $B31 には 3.900 $D31 には 3.55 二つをかけた値「13.845」の、少数第2位を四捨五入して返した値が、13.9 と出るんです。 少数第2位の 4 を四捨五入したら 13.8 が返されるはずですよね? 今日朝から一日悩んでます(+_+) パソコンには詳しくないので解り易くどなたか教えてください<m(__)m>

専門家に質問してみよう