2016-05-25 10 views
0

部分文字列(通常は16文字の4文字)の検索語に基づいてデータの行を検索および表示するためのマクロを作成しようとしています。これまで私が持っている(ゴードから助けを借りて)次VBAによる部分文字列検索

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim cell As Range 
Application.ScreenUpdating = False 
With ActiveSheet 
    .Rows.Hidden = False 'unhides all rows 
End With 
For Each cell In ActiveSheet.Range("C3:C1000") 
    If cell.Value <> ActiveSheet.Range("A1").Value Then _ 
      cell.EntireRow.Hidden = True 
    If ActiveSheet.Range("A1").Value = "" Then 
     cell.EntireRow.Hidden = False 
    End If 
Next 
Range("A1").Select 'ready for next value input 
Application.ScreenUpdating = True 
End Sub 
私は部分一致完全一致でないと緩いケースsenstivityとして検索用語を定義することができますどのように

TIA

データ列が特別な文字を持っていないダンカン

だけで0-9とA-Zので、おそらく同様の機能は、タスクに合わせます。もしそうなら、マクロはどのように変わるでしょうか?申し訳ありませんが、これで全部の初心者です。 ActiveSheet.Range( "A1")場合 値= "" その後に
:ActiveSheet.Rangeもし それは編集を試してみました。そして、( "A1")。のような値 "*" が、結果なし

答えて

2

ファーストを両方の弦(針と干し草)をLCASE()に変換してから、LIKE演算子を使用してください。以下の例のように

if lcase(haystack) like "*" & lcase(needle) & "*" then 
'do something 

正規表現とほとんど同じです。だからが含まれている場合、文字列haystackを調べます。 *はすべてを意味します(または何も意味しません)。これは明確ですか?

+0

多くのありがとうLubos、私はロジックに従っていますが、マクロを編集する必要があるかどうかはわかりません。大文字と小文字の区別は重要ではありませんが、部分一致の取得にはさらに注意が払われますので、この行をソートする必要があります。If ActiveSheet.Range( "A1")。Value = "" If ActiveSheet.Range( "A1") "*"それでは? – duncan297

+0

@ duncan297今、あなたは非表示の状態を 'cell.Value = ActiveSheet.Range(" A1 ")。Value'のようにテストしています。 haystackとして 'cell.Value'を使用して、あなたが好きなソリューションでこの部分を置き換えます。 – Verzweifler

+0

@ duncan297あなたはこの時点であなたの質問を更新できますか?コメントを読むのが難しい。しかし、他の比較演算子の代わりに 'Like'や' instr'(Verzweiflerが述べたように)を使う必要があります。あなたが2つの変数が同じかどうかをチェックして、<>を使うと同じではないので、代わりにlikeを使って部分的にチェックすることができます –

2

私たちは、あなたが針場合#または?などのlike感受性の文字が含まれている知ることができないので、私はinstr()を経由して解決策をお勧めしたい:

if instr(lcase(haystack), lcase(needle)) > 0 then 
' Do Stuff 

をこれは、あなたの最初のオカレンスの開始位置を与えますneedlehaystack、またはneedleが見つからない場合は0です。

+0

良い点ですが、VBAは '変数には機密文字が含まれていますが、その文字列ではわかりません。あなたは私に良い点を教えてくれました:p –

+1

私はVBAがそれらの文字を無視しないと確信しています。私は 'like'を使って、これらの式に基づいてカスタム検索を構築しました。 – Verzweifler

関連する問題