- ベストアンサー
文字列を数式に変換して計算する方法
エクセルで計算を行なうときにA1のセルに計算式、B1のセルに答えの数値を表したいときにこれまではA1に例えば1+1を入力してそれをコピーしてB1に貼り付けて その前に=を入力していたのですが、計算式をA1に入力した段階でB1に答えが出る方法がありましたら教えてください。なにぶんにも初心者なのでよろしくお願いします。ソフトはofficeXPです。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。補足を拝見して質問の意図が分かりました。 セルA1には文字列として、例えば「1+1」を入れておき、 セルB1にその計算結果を表示させたいということですよね? 関数では、直接そのような機能を持つものはなかったと思います。 (なかったと思うけどなあ・・・あったら誰か教えてください) 計算が一桁の足し算に限定されるとかであれば、MID関数を使って数値を取り出し、計算することも可能ですが、その程度でも過程はかなり複雑になりますので、いくつか作業用のセルを使って算出することになるでしょう。 もし、2桁や3桁の数字もあり、加減乗除もあり、さらに3つの数の計算もあるとかいうことになりますと、この方法では対応不可能かと思います。 もしVBAの知識を少しでもお持ちなら、方法はいたって簡単です。 メニューバーの「ツール」から「VisualBasicEditor」を起動します。プロジェクトウィンドウ上で編集対象のシートをダブルクリックし、右側のウィンドウに次のように入力します。 Private Sub Worksheet_Change(ByVal Target As Range) Range("b1") = "=" & Range("a1").Formula End Sub これで、セルA1に「3+2」と入力すると、セルB1に「5」と表示されるようになります。もちろん、べき乗や()を含む複雑な計算もOKです。 なおOfficeXPですと、マクロを含むシートを開く際には、事前に「ツール」-「マクロ」-「セキュリティ」で、セキュリティレベルを「高」以外にしておく必要があります。
その他の回答 (5)
- nishi6
- ベストアンサー率67% (869/1280)
(1)例えば、A1に『1+1』と入力しておきます。 (2)B1を選択して、挿入→名前→定義 で名前に『myCalc』、参照範囲に『=EVALUATE(A1)』として、OK (3)B1に『=myCalc』と入力します。『2』が表示されるはずです。(『』は入力したり表示はされません) 以後、『=myCalc』の式は、その左のセルの文字列(質問にある式)を評価して値を出します。 なお、myCalcはテキトーに付けた範囲名です。特にこれでなければいけないということはありません。 >計算式をA1に入力した段階でB1に答えが出る方法 上のように範囲名を付けて、B1に先に、『=myCalc』をセットしておけばいいことになりますが、 A1が未入力の場合はエラーになります。この対応としては、B1に =IF(ISERROR(myCalc),"",myCalc) としておけば、A1の式が入力された時にB1に値が表示されます。 この式を、B2から下方向にコピーしておけば、A2から下方向に連続的に式の入力ができます。 また、この手順は、1度範囲名を設定すれば、A-B列だけでなく、任意の隣り合った列で使えます。 ご参考に。
お礼
ありがとうございます。 色々な方法があるのですね。 やってみます。もっと勉強してみます。
- imogasi
- ベストアンサー率27% (4737/17069)
#2です。補足有難うございます。したいとしても、A1はデータを入れると、元いれた式が式を入れると、元のデータが消えます。残したいならC1とかに文字列で'=a1+1 とかいれておくのは同ですか。 B1にいれた=A1+1の式も数式バーに出ます。 数式主体(数式のみ)出したいなら、ツール-オプション -ウインドウオプション-数式にVをいれる で式がたのセルにセットした分も含めて一覧表示されます。
- telescope
- ベストアンサー率54% (1069/1958)
たくさんあるのなら、 =1+1 などの式をA列に入力して、すべてB列に貼り付けて、 A列だけを範囲指定して、「編集」-「置換」で 「検索する文字列」に = 「置換後の文字列」には何もいれずに、「すべて置換」-OK でできると思います。
お礼
ありがとうございました。 これからもよろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
質問がよくわかりません。データはA1の入れるのですか。 するとA1の計算式は消えてしまいます。=1+2のような数値の四則演算だけなら別ですが。 したがってA1に元から関数式をいれてあっても(例=A1+1)、B1には何も入りません。 B1に=A1とか=A1+1といれておけば、A1の値に1を足したものが入ります。 VBAを使わないとA1に1をいれた時、B1に式をいれずに=A1+1の2をいれることは出来ません。 値をセットするセル側に、関数式をいれておかないとなりません。 こう言う答えでは、だめですか。
補足
データーはA1だけに入力してA1には式だけを表示させてB1には答えだけを表示させたいのですが。 A1に式を表示させたいのは、B1の答えの根拠を表したいからです。質問の仕方がまずくて申し訳ありません。
セルB1に「=A1」と入れれば良いのではないですか?
お礼
さっそくの回答ありがとうございます。 やってみましたがうまくいきませんでした。 もう少しやってみます。
お礼
本当に助かりました。 いろいろ考えていたのですが、すっきりしました。 VBAを勉強して取り組みたいと思います。 ありがとうございます。