2016-06-28 10 views
1

現在、HRシートで特定のテキストを含む列ヘッダーを検索しています。このテキストは毎週変更することができます。たとえば、「州/都道府県」の欄に1週間は空白を入れることはできませんが、翌週には「州/都道府県」 )。vba WorksheetFunction.複数の値の一致検索

私は現在、一つの条件これは正常に動作します

StateProvince = WorksheetFunction.Match("State/Province", hr.Sheets("Open").Rows(1), 0) 

を探し、以下のコードを使用していますが、それはこれがある場合はスペースを含む第二の例のために見えるように私はこれに追加する探しています大文字と小文字の区別助言がありますか?

+0

最初の条件が見つからない場合、私はエラーを取得し、スペース –

+0

と同じ、私はERを与えるVBAでワークシート関数を使用して、それらのエラーを持つ可能 –

+0

トラップなどのような動的コードを作成しようとしていますそれでもし第1にエラーがあれば第2を、第2をスキップしてください。または、ワイルドカードを使用する* –

答えて

2

用途:

StateProvince = WorksheetFunction.Match("State*/*Province", hr.Sheets("Open").Rows(1), 0) 

この答えはあなたの質問に固有のものです。もっと汎用的なソリューションが必要な場合は、他の例を提供する必要があります。以下のように

+0

*は何をしますか?私は単語の始めまたは終わりにこれを置き、各単語の前または後に可能なスペースを用意することができますか? –

+0

@AaronC - '*'はワイルドカード文字であり、任意の数の文字の代わりに使用できます。たとえば、 "Tr * y"は "Tray"、 "Troy"、 "Trolley"と一致します。詳細は、[this](https://www.deskbright.com/excel/excel-wildcard/)を参照してください。 – Mrig

+0

@AaronC - あなたの例では '州*/*州'は 'States/Province'、' State/New Province'などの文字列にも一致します – Mrig

0

スペースの予測不可能な外観ので、あなたは、より良い、「unspaced」の文字列を渡すカスタムMyMatch()機能によってそれらをaltoghether無視したい:

を次のように

Function MyMatch(textToSearch As String, rng As Range) As Long 
    Dim txtRng As Range, cell As Range 

    MyMatch = -1 '<--| default value for no match found 
    On Error Resume Next 
    Set txtRng = rng.SpecialCells(xlCellTypeConstants, xlTextValues) '<--| consider only cells with text values 
    On Error GoTo 0 
    If Not txtRng Is Nothing Then '<--| If there's at least one cell with text value 
     For Each cell In txtRng '<--| loop through selected "text" cells 
      If WorksheeyFunction.Substitute (cell.Value, " ", "") = textToSearch Then '<--|remove every space occurrence from cell value and compare it to your "nospace" searched value 
       MyMatch = cell.Column - rng.Columns(1).Column + 1 
       Exit For 
      End If 
     Next cell 
    End If 
End With 

を使用するには

Dim StateProvince As Long 
StateProvince = MyMatch("State/Province", hr.Sheets("Open").Rows(1)) '<--| pass an "unspaced" string to search 
If StateProvince > 0 Then 
    ' code for handling found StateProvince 
Else 
    ' code for handling NOT found StateProvince 
End If 
関連する問題