2017-02-26 29 views
1

VBA置換機能を使用して別の文字列から文字列を削除しようとしています。VBA置換を使用した完全一致

私は;

"$B$1;$B$21;$B$2;$C$3;$B$20;$B$201"

で連結セルアドレスが含まれていると私は削除したい文字列が言うのXXXによって$B$2で以下のようなルックスを削除しようとしていたから、文字列。

私は、文字列に正確に$B$2を検索し、

などの出力を期待したいと思いますしかし置き換える機能が $B$1;xxx1;xxx;$C$3;xxx0;xxx01

以下

などの文字列に$B$2のすべての出現と一致し、私に出力を提供します

$B$1;$B$21;xxx;$C$3;$B$20;$B$201

これを行う方法の1つは、の文字列を分割することです(セパレータとループとそれぞれの値を見て)しかし、私はここでより直接的な解決策を見ています。パターンマッチングテクニックなどを使うのと同じです。

答えて

3

"完全な"参照にのみ一致するように、置換操作には次のように含めることができます:;あなただけの最後にダミーのセミコロンを追加することによって、また、最後のエントリを一致させるための予防策を取る必要があります。

s = "$B$1;$B$21;$B$2;$C$3;$B$20;$B$201" 
find = "$B$2" 
repl = "xxxx" 
result = Replace(s & ";", find & ";", repl & ";") 
result = Left(result, Len(result)-1) ' Remove the final semicolon 

これはあなたのケースのために働くが、より一般的な運動で、あなたもをテストしたいと思います区切り文字の前にして、最後の2行は次のようになります。

result = Replace(";" & s & ";", ";" & find & ";", ";" & repl & ";") 
result = Mid(result, 2, Len(result)-2) 
+0

ありがとう –

2

あなた冷たい使用:

Function myReplace(strng As String, findStr As String, replacementStrng As String) 
    myReplace = Replace(strng & ";", findStr & ";", replacementStrng & ";") 
    myReplace = Left(myReplace, Len(myReplace) - 1) 
End Function 

へあなたの "メイン"サブで次のように悪用されるでしょう:

strng = "$B$1;$B$21;$B$2;$C$3;$B$20;$B$201" 
MsgBox myReplace(strng, "$B$2", "xxx") 
関連する問題