[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『計算式内の文字列を無視して計算結果を表示する』(アロハー)
計算式のセル 答えのセル
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.