2017-02-18 9 views
0

検索の前にFindを使用して検索のパラメータをトリミングする方法はありますか?検索前に検索パラメータを切り捨てて検索する

特定の単語を含むセルを検索するために検索したいExcelファイルがあります。各セルには単語が1つしかありません。 Find関数は大文字と小文字を区別せず、ほとんどの場合完全に機能します。私が見つけた唯一の(可能な)欠陥は、セルに先頭と末尾のスペースがないという単語だけが含まれていなければならないということです。例えば

: 私はFind機能

Dim rng as Range 
rng = ActiveSheet.Range("A1:K100") 
Set foundItem = rng.Find("acoustic") 
if not foundItem Is Nothing Then MsgBox foundItem.Address 

これは、その多くのバリエーションで単語を見つける使用して、単語の音響を検索したい場合 - 「アコースティック」、「音響」、「音響」を、 "アコースティック"や "アコースティック"のような先頭または末尾のスペースがある場合、それを見つけることはできません。

したがって、検索を実行する前にセルからスペースを削除する方法はありますか?または、範囲を通過して最初にトリミングする関数を作成する必要がありますか?

答えて

0

あなたが前に見つけることに範囲をトリミングすることができます

rng.value = Application.Trim(rng.value) 

か範囲が数式を持っており、あなたがそれらを維持したい場合:

rng.Formula = Application.Trim(rng.Formula) 
+0

うわー....あなたはこのVBのもののすべてです。私はあなたがトリミングすることができると知っていましたが、そのように全範囲をトリミングすることはできませんでした。これは完璧です。ありがとうございました! – Apolymoxic

+0

@Apolymoxicあなたは大歓迎です。範囲をトリミングするさまざまな方法については、こちらをご覧ください(http://stackoverflow.com/questions/42147564/trim-function-remove-spaces-from-cells-using-vba/42148229#42148229)。 –

0

だけxlPart

Find()方法の LookAtパラメータを設定します
Set foundItem = rng.Find(What:="acoustic", LookIn:=xlValues, lookat:=xlPart, MatchCase=False) 

あなたも同じことを行うことができます式中のCH:

Set foundItem = rng.Find(What:="acoustic", LookIn:=xlFormulas, lookat:=xlPart, MatchCase=False) 

、あなたは常に明示的にFind()もエクセルUIからの場合は彼らの最後の設定が使用され、LookInLookAtSearchOrderをspecifcy、およびMatchByteパラメータなければならないことを通知します! (私の目的上、少なくともLookInLookAtのパラメータを指定するだけで十分です)

関連する問題