2016-06-28 2 views
1

현재 HR 시트에서 특정 텍스트가 포함 된 열 머리글을 검색하고 있습니다. 이 텍스트는 매주 변경 될 수 있습니다. 예를 들어, "시 /도"열에는 공백이 없지만 다음 주에는 "시 /도"이 될 수 있습니다 (단어 사이의 공백에주의하십시오).vba WorksheetFunction. 여러 값의 일치 검색

나는 현재 하나 개의 조건이 잘 작동

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

을 찾습니다 아래의 코드를 사용하고 있지만,이은을 경우 공백이 포함 된 두 번째 예를 들어 보이도록 나는이에 추가 할 찾고 있어요 대문자와 소문자가 구별됩니다. 어떤 제안?

+0

첫 번째 조건이 발견되지 않는 경우 내가 오류가 공간 –

+0

와 같은, 내가 어를 줄 것이다 VBA에서 워크 시트 함수를 사용하여, 그 오류가 가능한 –

+0

트랩과 같은 동적 코드를 만들려고 노력하고 ror, 그래서 1 차에 오류가 있다면 2 차를 사용하지 않으면 2 차를 건너 뜁니다. 또는 와일드 카드를 사용하십시오 * –

답변

2

사용 :

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

이 답변은 귀하의 질문에 따라 다릅니다. 보다 일반적인 솔루션을 원하면 다른 예제를 제공해야합니다. 당신은 더 나은 사용자 정의 MyMatch() 기능을 이용하여이를 altoghether 무시 거라고 공간의 예측할 수없는 외관이되는 통과 이후

+0

* 무엇을합니까? 단어의 앞이나 뒤에 단어를 넣을 수도 있습니다. 각 단어 앞뒤에 공백을 넣을 수 있습니까? –

+0

@AaronC -'*'는 와일드 카드 문자이며 임의의 문자 수를 대신 할 수 있습니다. 예를 들어, "Tr * y"는 "Tray", "Troy"및 "Trolley"와 일치합니다. 자세한 내용은 [this] (https://www.deskbright.com/excel/excel-wildcard/)를 참조하십시오. – Mrig

+0

@AaronC - 예를 들어'State */* Province'는 'States/Province','State/New Province' 등과 같은 문자열에 대해서도 일치합니다. – Mrig

0

"unspaced는"문자열처럼 다음 다음과 같은

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