• ベストアンサー

エクセルでセルの値によって数式を変えたい

エクセル2003を使用しておりますが、セルの値によって数式を変えることはできますでしょうか。 例えば A1に切り上げの文字が入っていれば、B1はROUNDUP(100/3,0)に、 A1に切り捨ての文字が入っていれば、B1はROUNDDOWN(100/3,0)に、 A1に四捨五入の文字が入っていれば、B1はROUND(100/3,0)に、 のようにしたいです。 IF文を使えばもちろんできるのですが、すでに指定されている多数の 数式を、一括で置換したいと思っております。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

参照セルの値によって、表示形式の変更(条件付書式)や関数式(IF,VLOKKUP等)を用いて結果を表示することは可能。 参照セルの値によって、セル内の計算式自体を変更することはVBAを利用しない限り不可能。 関数式で自分自身を書き換えることが出来ないため。

takataka18
質問者

お礼

ありがとございます。 参照セルの値によってセル内の計算式自体を変更することは できないのですね。 今回はIF関数にて対応致します。

その他の回答 (4)

回答No.5

No.1です。もう一案 一方通行でよければ 1. B1セルに    =IF(ISNA(MATCH(A1,{"ROUNDUP","ROUNDDOWN","ROUND"},0)),    "その他","="&A1&"(100/3,0)") 2. 下へオートフィル 3. コピー & 値の貼り付け 4. B列を選択した状態で置換 = → = (「=」を「=」に置換する)

takataka18
質問者

お礼

ありがとうございます。 イメージ的にはご指摘の方法で可能なのですが、 A1を変えただけで数式を変えたいと思っていました。 関数を参照する関数はないのですね。

回答No.4

No.1です 関数を参照するような(ワークシート)関数はありません イメージとしてはこんな感じでしょうか? =IF(ISNA(MATCH(A1,{"ROUNDUP","ROUNDDOWN","ROUND"},0)),"その他", CHOOSE(MATCH(A1,{"ROUNDUP","ROUNDDOWN","ROUND"},0), ROUNDUP(100/3,0),ROUNDDOWN(100/3,0),ROUND(100/3,0)))

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.2

質問の趣旨が理解できません =ROUNDUP(100/3,0) は 34 =ROUNDDOWN(100/3,0)は 33 =ROUND(100/3,0)は 33 改めて計算するまでもなく、切り上げを除いて33ですよね ひょっとして =IF(A1="ROUNDUP",ROUNDUP(100/3,0),IF(A1="ROUNDDOWN",ROUNDDOWN(100/3,0),IF(A1="ROUND",ROUND(100/3,0),""))) と一つの式にまとめたいとか

takataka18
質問者

お礼

ありがとうございます。 例えが悪かったようですね。 計算結果は分かっておりましたが、他のセルを参照して 数式自体を変えられるかという趣旨の質問でした。 どうやらそれは関数ではできないようですね。

回答No.1

>すでに指定されている多数の数式を、一括で置換したいと思っております。 オートフィルとかコピー&ペーストのことでしょうか?? >ROUNDUP(100/3,0)に、 34の定数? ということはないと思います。 >IF文を使えばもちろんできるのですが VBA?ならば プロシージャを提示してはどうですか? サンプルを提示しつつ説明してください

takataka18
質問者

補足

ありがとうございます。 IF文ではなくIF関数の意味でした。 B1には、 =IF(A1="ROUNDUP",ROUNDUP(100/3,0), IF(A1="ROUNDDOWN",ROUNDDOWN(100/3,0), IF(A1="ROUND",ROUND(100/3,0),"その他"))) の数式を入れると同じ事ができます。 これをB1に、=A1(100/3,0) のようにする関数はないかと思い質問致しました。

関連するQ&A

専門家に質問してみよう