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

解決済みの質問

セル参照によって関数を変更させたい

Excel2010を使用しています。
「B列×A1セル」の計算でROUNDDOWN関数を使って切捨てをしているのですが、場合によって切捨てたい位が十の位であったり、百の位であったりとその都度変わるので「=ROUNDDOWN(B5*$A$1,$A$2)」として「A2」セルを参照させ、そこを「-2」「-3」などと変更するようにしています。
ところが切捨てだけではなく、切上げや四捨五入をするケースも出てきたのですが、同じようにセル参照を使って「ROUNDDOWN」を「ROUND」や「ROUNDUP」に変える事は可能でしょうか?
最初の行の関数を書き換えてドラッグでコピーをしたり、置換をしたりすれば良いのでしょうが、セルの値を変えることによって、関数を変えることは出来ないかと考えています。
宜しくお願い致します。

投稿日時 - 2012-08-09 14:07:22

QNo.7635092

困ってます

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

 例えば、切捨て、切上げ、四捨五入をする位をA2に入力した値で決定して、
A3に入力した値がマイナスの時はROUNDDOWN関数、プラスの時はROUNDUP関数、0の時はROUND関数とするものとします。

 幾つかの異なるやり方がありますが、基本的な方法はIF関数を利用するもので、一例をあげますと次の様な根のになります。

=IF($A$3<0,ROUNDDOWN(B5*$A$1,$A$2),IF($A$3=0,ROUND(B5*$A$1,$A$2),ROUNDUP(B5*$A$1,$A$2)))

投稿日時 - 2012-08-09 14:51:43

お礼

確かにIF関数で出来ますね!「ROUNDDOWNという文字を置き換えたい」という考えで固まっていて、考えが及びませんでした。
ただ質問文では省略していたのですが、実際はもう少し長い関数が入っているので、IFで分岐したらかなり長い関数になってしまいましたが^^;。
大変助かりました。有難うございました。

投稿日時 - 2012-08-09 17:05:18

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

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

回答(4)

ANo.4

J列に、
切り上げ(=1)、
K列に、
四捨五入(=2)、
L列に、
切り下げ(=3)、をセットで計算しておき、「$A$3」の新たなスイッチ(上のカッコ内の値を設定)でこのテーブル(J~L列)を参照する。

C2に、

=OFFSET($J2,0,$A$3-1)

以下、適当にコピー

投稿日時 - 2012-08-09 16:09:31

お礼

J~Lの列にそれぞれのパターンの関数を予め入れておき、それを「$A$3」のセルで列を指定して取り出す…という事ですね?
ほぼ希望通りのことが出来ました!計算用の列を設けなければならないですが、こんな方法もあるのかと大変勉強になりました。
御回答、有難うございました。

投稿日時 - 2012-08-09 17:05:54

ANo.3

 次の様な方法もあります。

=ROUNDDOWN($A$1+SIGN($A$1)*10^-$A$2*(ROUNDDOWN($A$1,$A$2)<>$A$1)*(($A$3=0)/2+($A$3>0)),$A$2)

投稿日時 - 2012-08-09 14:59:57

お礼

こちらの方は難しくて私には理解することが出来ませんでした。
申し訳ありません。
また時間に余裕がある時に考えてみたいと思います。
有難うございました。

投稿日時 - 2012-08-09 17:06:27

ANo.1

IF関数でできませんか?

投稿日時 - 2012-08-09 14:16:45

お礼

確かにIF関数で出来ますね!「ROUNDDOWNという文字を置き換えたい」という考えで固まっていて、思いつきませんでした。
参考になりました。御回答、有難うございました。

投稿日時 - 2012-08-09 17:06:57

あなたにオススメの質問