• 締切済み

一つのセルに計算式を入れて別のセルに答えを出したい

いくつか過去の質問を読んだのですが、要領を得ないので力を貸してください。 エクセルのA列に「3*5+2」などの数式を文字列として入力し、B列に「17」という答えを出るようにしたいです。 何か簡単にできる方法はありますでしょうか?

みんなの回答

  • 159159
  • ベストアンサー率100% (1/1)
回答No.3

えーと、あなたの言っていることが簡単な事でしたら、A列に普通に計算式を入れて、B列にイコール(=)の後に計算式3*5+2を入れたらB列には答えのみが出ます。

happygreen
質問者

お礼

なるほどー。このやり方には気づきませんでした。 すぐに答えがB列に出てくるわけじゃないのが、ちょっと面倒にも感じますが、検討してみます。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

ユーザ定義関数として標準モジュールに Public Function eval(exp) eval = Application.Evaluate(StrConv(exp, vbNarrow)) End Function のような関数を作れば A1 3*5+2 の時 B1 =eval(A1) で17という答えがでます 見当違いならごめんなさい

happygreen
質問者

お礼

ありがとうございます。 チャレンジしてみます!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

エクセルの計算に (1)=3*5+2のように直接入力する方式 (2)セル参照を使う    例えばA1に5を入れておき、==3*A1+2とA1にセルとは別のセルに式を入れる方式 があります。ご存知だと思います。 (1)と似ているのですが、この質問の意図は違うと思います。 (3)セルの内容(算術式が多いと思うが)を、数式とみなして計算するのは、普通の人には至難のわざと思います。 (4)(3)を一般化して=5y+1のようなことも考えることもありえます http://www2.moug.net/bbs/exvba/20060503000001.htm で大議論してる例がありました。 (5)定数だけを引数にして、ユーザー関数を作る方法もあります =関数式を=enzan1(5)と表現して =3*a+2を計算して返すような例です。 (6)セルの数式(定数と演算子だけ、かつ四則演算とカッコだけ許すに限っても)数式の約束どおりの計算を行うのは、自作せねばならず、相当至難の業です。逆ポーランド記法に直し処理する必要もあると思うので、それらのアルゴリズムの使用経験やテストも要ります。 エクセル関数にはそれらしきものはないと思います。 エクセルの実務向けの発想と違うのだと思います。 質問者は、一般化が好きな、理科数学には適した性向の方とは思いますが。 ーー 質問者のレベルと上記の私の記述のどの辺の話題に、質問者の質問の意図がカスっているか、良ければ書いて見てください。 別のアプローチの解法がどなたかから、載るかもしれません。

happygreen
質問者

補足

詳しくありがとうございます。 えーっと・・・私はごく普通に?PCを使っている程度で、決してレベルは高くありません。マクロも関数も使ってはいますが、詳しくありません。ですから私が質問していることが無謀かどうかもわからないレベルです(汗)過去の質問を読んだ限り、ちょっとめんどうなのかなーとは思っているのですが・・・ 仕事で、質問のようなことができないかと聞かれ、何かいい方法はないかなーと思ったのです。 ですから一般人には至難のわざと言われると、きっと私には無理ですね。 何かいい方法が出るかもう少し待ってみますが、出なければあきらめます。 ありがとうございました。

関連するQ&A