人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルのできそうでできない技。
A1セルに「500×2」を文字列として入力します。A2ではA1を参照して、関数を使い計算できる式に変換します。要するに「500*2」ですね。最後にA3で、A2の式を参照して、500*2を計算させた結果1000を表示したいのですが、計算されず式のまま表示されどうもうまくいきません。A3にはどのような設定をするとうまくいくんでしょうか?

●質問者: keronimo
●カテゴリ:コンピュータ
✍キーワード:エクセル セル 入力 文字列 計算
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● nandedarou
●20ポイント

A2の「500*2」はあくまで文字としてエクセルは認識し、それを参照しただけでは、計算しようとはしません。次のようにしてみて下さい。


A2に次のように入力

=SUBSTITUTE(A1,"×","*")

A3に次のように入力

=LEFT(A2,FIND("*",A2)-1)*RIGHT(A2,LEN(A2)-FIND("*",A2))

※ただし、上記の方法では、「500÷2」、「500×2×3」などには対応しておりません。

◎質問者からの返答

汎用的に使えないと厳しい。

欄外のコメントによりおまけポイント。


2 ● Mook
●100ポイント

標準関数では難しいですが、マクロの Evaluate 関数を使用することで、文字列を計算することが出来ます。


ちょうど、今回のケースと同じ内容が掲載されているますので、下記が参考になるかと思います。

文字列の数式を計算する

◎質問者からの返答

よく回答していただいる方ですね。

今回は標準モジュールとeval関数を採用しました。


3 ● llusall
●50ポイント

ポイント

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

Excel(エクセル)基本講座:文字列の関数

文字列中から検索文字列を探し、置換文字列に置き換えます

◎質問者からの返答

トラックバックの内容についていけませんが、参考になりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ