[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『計算式内の文字列を無視して計算結果を表示する』(アロハー)
計算式のセル 答えのセル
20*3(追加)+15*4(新規)+0.55 122.55
25*2+15*4+0.75(変更) 110.75
細かく検証していませんが、こんな感じで対応できますでしょうか? ユーザー定義関数ですb Function EVAL(rng As Range) EVAL = Evaluate(Replace(Replace(Replace(StrConv(rng, vbNarrow), "(新規)", ""), "(追加)", ""), "(変更)", "")) End Function =EVAL(A1) のように入力してください。 ※追加、新規、変更のみで考えています。 (キリキ)(〃⌒o⌒)b
正規表現で。 (文字列) というパターンをすべて排除します。
Function spaeval(rng As Range) With CreateObject("VBScript.RegExp") .Pattern = "\([^0-9]+\)" .Global = True spaeval = Evaluate(.Replace(rng.Value, "")) End With End Function (純丸)(o^-')b
純丸さん、お久し〜♪ 正規表現に挑戦しようとした仲間として、ちょいイチャモンw 2重に括弧があったばやいどないします? 例 : 25*2+15*4+(0.75+0.25(変更)) 調べたら、2バイト文字を検出するのに こんなのを発見しましたb [^\x01-\x7E] ついでに、純丸さんのコードを勝手に変更して考えてみましたw Function spaeval(rng As Range) Dim MyStr As String Dim x As Variant MyStr = StrConv(rng.Value, vbNarrow) With CreateObject("VBScript.RegExp") .Pattern = "\([^\x01-\x7E]+\)" .Global = True For Each x In .Execute(MyStr) MyStr = Replace(MyStr, x, "") Next x spaeval = Evaluate(MyStr) End With End Function #正規表現、すっかり頭から消えてましたw 思い出すのに時間かかったw (キリキ)(〃⌒o⌒)b
面白そうなので、私もイチャイチャ(笑)
25*2+15*4+(0.75+0.25(変更1)) 25*2(変更1)+15*4+(0.75*(1+2)+0.25(変更2))
こんな場合どうします? キリキさんのコードをお借りして〜♪
Function momoeval(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 momoeval = Application.Evaluate(MyStr) End With End Function (momo)
震災後は人の温かさつくづく感じます、感謝! 昨夜も大きな地震が有り、身の回りの整理がつきましたら みなさんのアイディアを試してみます。 ありがとうございました。 (アロハー)
実は昨日の時点で、(変更1) のような文字列があるとエラーになると 気づいていたのですが、時間がなくて 見切り発車してしまいました。 二重カッコまでは気が付きませんでしたが、、。
momoさんにフォローしていただいたので安心です。
キリキさん、以前のようにまた「突っ込み合い」をやりたいですね。 (純丸)(o^-')b
>実は昨日の時点で、(変更1) のような文字列があるとエラーになると >気づいていたのですが、時間がなくて 見切り発車してしまいました。 流石です! momoさんも、純丸さんも、そういった事まで想定していたなんて・・・ いつも見切り発車のσ(^_^;)ですwww >キリキさん、以前のようにまた「突っ込み合い」をやりたいですね。 やりたいですね〜♪ やるためには、もう少しスキルを上げていかねば^^; (キリキ)(〃⌒o⌒)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.