- ベストアンサー
エクセルでセルの値によって数式を変えたい
エクセル2003を使用しておりますが、セルの値によって数式を変えることはできますでしょうか。 例えば A1に切り上げの文字が入っていれば、B1はROUNDUP(100/3,0)に、 A1に切り捨ての文字が入っていれば、B1はROUNDDOWN(100/3,0)に、 A1に四捨五入の文字が入っていれば、B1はROUND(100/3,0)に、 のようにしたいです。 IF文を使えばもちろんできるのですが、すでに指定されている多数の 数式を、一括で置換したいと思っております。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
参照セルの値によって、表示形式の変更(条件付書式)や関数式(IF,VLOKKUP等)を用いて結果を表示することは可能。 参照セルの値によって、セル内の計算式自体を変更することはVBAを利用しない限り不可能。 関数式で自分自身を書き換えることが出来ないため。
その他の回答 (4)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
No.1です。もう一案 一方通行でよければ 1. B1セルに =IF(ISNA(MATCH(A1,{"ROUNDUP","ROUNDDOWN","ROUND"},0)), "その他","="&A1&"(100/3,0)") 2. 下へオートフィル 3. コピー & 値の貼り付け 4. B列を選択した状態で置換 = → = (「=」を「=」に置換する)
お礼
ありがとうございます。 イメージ的にはご指摘の方法で可能なのですが、 A1を変えただけで数式を変えたいと思っていました。 関数を参照する関数はないのですね。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
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)
質問の趣旨が理解できません =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),""))) と一つの式にまとめたいとか
お礼
ありがとうございます。 例えが悪かったようですね。 計算結果は分かっておりましたが、他のセルを参照して 数式自体を変えられるかという趣旨の質問でした。 どうやらそれは関数ではできないようですね。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>すでに指定されている多数の数式を、一括で置換したいと思っております。 オートフィルとかコピー&ペーストのことでしょうか?? >ROUNDUP(100/3,0)に、 34の定数? ということはないと思います。 >IF文を使えばもちろんできるのですが VBA?ならば プロシージャを提示してはどうですか? サンプルを提示しつつ説明してください
補足
ありがとうございます。 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) のようにする関数はないかと思い質問致しました。
お礼
ありがとございます。 参照セルの値によってセル内の計算式自体を変更することは できないのですね。 今回はIF関数にて対応致します。