A1セルに「500×2」を文字列として入力します。A2ではA1を参照して、関数を使い計算できる式に変換します。要するに「500*2」ですね。最後にA3で、A2の式を参照して、500*2を計算させた結果1000を表示したいのですが、計算されず式のまま表示されどうもうまくいきません。A3にはどのような設定をするとうまくいくんでしょうか?
A2の「500*2」はあくまで文字としてエクセルは認識し、それを参照しただけでは、計算しようとはしません。次のようにしてみて下さい。
A2に次のように入力
=SUBSTITUTE(A1,"×","*")
A3に次のように入力
=LEFT(A2,FIND("*",A2)-1)*RIGHT(A2,LEN(A2)-FIND("*",A2))
※ただし、上記の方法では、「500÷2」、「500×2×3」などには対応しておりません。
標準関数では難しいですが、マクロの Evaluate 関数を使用することで、文字列を計算することが出来ます。
ちょうど、今回のケースと同じ内容が掲載されているますので、下記が参考になるかと思います。
よく回答していただいる方ですね。
今回は標準モジュールとeval関数を採用しました。
ポイント
C1セルは、VBAの「Evaluate」関数を利用したユーザ定義関数を使用して、
式を評価させます。
ユーザ定義関数の作成
1.メニューから、[ツール]-[マクロ]-[VisualBasicEditor]から、VBAのエディタを起動します。
2.エディタのメニューから、[挿入]-[標準モジュール]から、標準モジュールを作成します。
3.以下の関数を記述します。
Option Explicit
'(標準モジュール)
Function Eval(ByVal expr As String)
Eval = Evaluate(expr)
End Function
ワークシートの記述
A1セル
500×3 <--全角の数字でも可!
B1セル
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"+","+"),"-","-"),"×","*"),"÷","/")
C1セル
=eval(B1)
参考
SHOJI's Code
Excel(エクセル)基本講座:文字列の関数
トラックバックの内容についていけませんが、参考になりました。
汎用的に使えないと厳しい。
欄外のコメントによりおまけポイント。