[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで「×⇒*」、「÷⇒/」と認識して計算結果を表示したい』(アロハー)
以前にお世話になり下記のプログラムを完成させていただきました 大変重宝しており、ありがとうございます。 TSIKI名の関数で、指定したセルに有る計算式の値を表示するものです
例) A1(計算式) A2(TSIKI)
5*10 50
5×10 Value
100/25 4
100÷25 Value
この式の中に"×"または"÷"の記号を使った式の場合も、"×"⇒"*"、"÷"⇒"/"と置換え
て計算し、計算結果を表示したいのですが、検索置換Replaceメソトッドだと上手く行きません、
ご教授いただけませんでしょうか?
宜しくお願い申し上げます。
Function TSIKI(rng As Range)
'文字列混じり計算値の関数
'
Dim MyStr As String
Dim buf As Variant
Dim obj As Object
MyStr = StrConv(rng.Value, vbNarrow)
With CreateObject("VBScript.RegExp")
.Pattern = "\([^()]*\)" .Global = True While MyStr Like "*(*)*" For Each obj In .Execute(MyStr) buf = Application.Evaluate(obj.Value) If IsError(buf) Then MyStr = Replace(MyStr, obj, "") Else MyStr = Replace(MyStr, obj, buf) End If Next obj Wend TSIKI = Application.Evaluate(MyStr) End With End Function
以前のスレはこちらですね? [[20110407171229]] 『計算式内の文字列を無視して計算結果を表示する』(アロハー)
で、今回の例の場合は値しか無い様なので、こちらで良いのでは? [[20081012185737]] 『文字列の計算式を計算』(alalfa)
(HANA)
それだけだったら
Function TSIKI(ByVal txt As String) TSIKI = Evaluate(Replace(Replace(txt, "×", "*"), "÷", "/")) End Function
で良さそうですが? (seiya)
例@ A1(計算式) A2(関数) (2.5+8.0)*5(人) 52.5 1.5*3.8(u) 5.7
例A A1(計算式) A2(関数) (2.5+8.0)*5[人] 52.5 1.5*3.8[u] 5.7
(seiya)さんの、アドバイスこれから確認してみます。
(アロハー)
>以前の@TSIKIの場合、下記の例@の通り、計算式内に注釈とし >てカッコ内の文字列は無視する設定としており でも、最初にご提示のサンプルはその様に成っていませんよね? ですから「今回の例の場合は」と但し書きが付いたのですが。 次にご提示のサンプルも充分とは言えないと思いますが。 サンプルデータはきちんと作成されるのが良いと思います。
関数に、SUBSTITUTE関数が有ります。 SUBSTITUTE(文字列,検索文字列,置換文字列,置換対象)
検索文字列を、置換文字列に置き換えます。 事前にこれで処理をした状態で TSIKIにかけると コードの変更は不要に思えます。
また、Replace メソッドをヘルプで調べると 二つ出てきますね。
WorksheetFunction オブジェクトの Replace メソッド の方を使うと良いのではないかと思います。が。。。? あ、seiyaさんご提示のコードの中で使って有りますね。
(HANA)
seiyaさんのコードとあわせて、確認してみます。
ご迷惑おかけしました。
(アロハー)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.