2017-11-22 32 views
1

列Fのデータのワイルドカードとして「*」を使用しようとしています。すべてのデータは、「Pie **」と同じ形式および長さ"*"VBAは、類似のテキストを含む他の単語を置き換えずにテキストを置き換えます。

例(0-9)を表す:Pie22、Pie71、Pie15、Hot22、Hot41、Hot98

私は以下のコードをしようとすると、私はCoffeeXXは、検索と置換「ホットされている問題に遭遇"" hotdog "で" chickendog "になります。

これを修正して、.findがテキストを含むものを選択するのではなく、ワイルドカードを表示するようにしましたか?

Set PieXX = Columns("F").Find(What:="Pie**", Lookin:=xlvalues) 
If not PieXX is nothing then 
Columns("F").Replace What:"Pie**", replacement:="Hotdog", _ 
SearchOrder:=xlbyrows, Matchcase:=False, SearchFormat:=False, Replaceformat:=false 
End If 

    Set CoffeeXX = Columns("F").Find(What:="Hot**", Lookin:=xlvalues) 
If not CoffeeXX is nothing then 
Columns("F").Replace What:"Hot**", replacement:="Chicken", _ 
SearchOrder:=xlbyrows, Matchcase:=False, SearchFormat:=False, Replaceformat:=false 
End If 
+0

テストされていない私はあなたが(1文字に一致) '?'ワイルドカードではなく、(複数の文字にマッチする)、 '*'ワイルドカードをしたいと思います。 '*'が 'Find'で許可されていれば'? 'も許されると私は推測しています。 – YowE3K

+0

'cell.value like pie 'の範囲のすべてのセルに対してこれをループで実行します。 cell.Replace "pie"、 "hi"、LookAt:= xlPart'となります。これは、セル内のテキストを "pie"に続けて2文字だけ置き換え、テキストの "pie"部分を置き換えるだけです。これがあなたが望むものだと思いますか? – garbb

+0

さて、私が誤ってコメントの "upvote"を3回クリックするとアップヴォートがカウントされず、再びアップに投票できないことが分かりました。 (愚かな)何とか、@ + 1 ++から@ YowE3Kと言いました。あなたの声明は 'ワイルドカードが何かを拾うのではなく、ワイルドカードを見る 'というのは、ワイルドカードが何をしているのかというと自己矛盾しています。 ["VBA文字列比較で使用されるワイルドカード文字"(http://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/wildcard-characters-used-in-string)の基本事項は次のとおりです。 - 比較)。 – ashleedawg

答えて

2
For each cell in Range("F1", Range("F1").End(xlDown)) 
    If cell.value like "pie??" then cell.Replace "pie", "hi", LookAt:=xlPart 
Next 

これは

+0

それは働いた!修正していただきありがとうございます。私は投票に十分なコメント/投稿がありません。 – SimpleK

関連する問題