dポイントプレゼントキャンペーン実施中!

エクセル2003を使用しておりますが、セルの値によって数式を変えることはできますでしょうか。

例えば
A1に切り上げの文字が入っていれば、B1はROUNDUP(100/3,0)に、
A1に切り捨ての文字が入っていれば、B1はROUNDDOWN(100/3,0)に、
A1に四捨五入の文字が入っていれば、B1はROUND(100/3,0)に、
のようにしたいです。

IF文を使えばもちろんできるのですが、すでに指定されている多数の
数式を、一括で置換したいと思っております。

A 回答 (5件)

参照セルの値によって、表示形式の変更(条件付書式)や関数式(IF,VLOKKUP等)を用いて結果を表示することは可能。



参照セルの値によって、セル内の計算式自体を変更することはVBAを利用しない限り不可能。
関数式で自分自身を書き換えることが出来ないため。
    • good
    • 0
この回答へのお礼

ありがとございます。

参照セルの値によってセル内の計算式自体を変更することは
できないのですね。

今回はIF関数にて対応致します。

お礼日時:2008/12/22 22:50

No.1です。

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

ありがとうございます。

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

関数を参照する関数はないのですね。

お礼日時:2008/12/22 22:55

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)))
    • good
    • 0

質問の趣旨が理解できません


=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),"")))
と一つの式にまとめたいとか
    • good
    • 0
この回答へのお礼

ありがとうございます。

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

どうやらそれは関数ではできないようですね。

お礼日時:2008/12/22 22:59

>すでに指定されている多数の数式を、一括で置換したいと思っております。


オートフィルとかコピー&ペーストのことでしょうか??

>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)

のようにする関数はないかと思い質問致しました。

補足日時:2008/12/19 22:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!