2014-02-13 2 views
0
  1. 고객 이름의 의미있는 부분을 사용하여 2010에서 고객 유형을 조회 할 수있는 방법이 있습니까? 예 : 고객 이름은 Littleton 's Valley Market이지만 고객 유형을 조회하려고 시도하는 목록은 <Littletons Valley MKT #2807 또는/및 Littleton Valley과 같이 약간 다른 형식으로 표시됩니다.고객 이름의 의미있는 부분으로 고객 유형을 검색하고 우선 순위를 설정하십시오.

  2. 일부 고객은 여러 고객 유형 아래에 표시 될 수 있습니다. 어떤 고객이 어떤 고객을 대상으로하고 기본 또는 보조 유형을 끌어낼 수 있는지 어떻게 알 수 있습니까?

+0

예제를 보여주기 위해 코드 서식을 추가했습니다. 그 여는 괄호가 당신의 모범에 있어야하는지 아닌지 확실하지 않았습니다. – Andy

답변

0

Re # 1. 주요 <에 실패 (경우가 속한!) 및 다른 외부 접두사하지만이 드문 정도 존재가 될 수 있습니다

=INDEX(G:G,MATCH(LEFT(A1,6)&"*",F:F,0)) 

또는 유사한 유용 할 정도로 잡을 수 있습니다. 처음 6자를 살펴 보았지만 불행히도 한 번에 한 번만 조정할 수 있습니다. 불일치가 ColumnA에 있다고 가정합니다 (예 : 위 공식에 대해 A1). 올바른 이름은 ColumnG의 해당 행에 필요한 유형의 ColumnF에 있습니다.

대규모로 Fuzzy Lookup이 도움이 될 수 있습니다.

VBA 태그 Soundex matchingLevenshtein distance이 중요 할 수 있습니다.

Re # 2 보조 유형이 ColumnH에 있고, 다시 일치하는 행에있는 경우 위의 G : G를 H : H로 조정하십시오.

0

pnuts은 좋은 답변을 다시 제공 : 퍼지 조회, Soundex와 매칭 등을하기 전에이 취급 한 신속하고 더러운 방법 : 나는 코드에서 isNameLike 전화, 또는로 사용할 수 있습니다 그리고

Function isNameLike(nameSearch As String, nameMatch As String) As Boolean 
    On Error GoTo ErrorHandler 

    If InStr(1, invalidChars(nameSearch), invalidChars(nameMatch), vbTextCompare) > 0 Then isNameLike = True 
    Exit Function 

ErrorHandler: 
    isNameLike = False 
End Function 
Function invalidChars(strIn As String) As String 
    Dim i As Long 
    Dim sIn As String 
    Dim sOut As String 

    sOut = "" 
    On Error GoTo ErrorHandler 

    For i = 1 To Len(strIn) 
     sIn = Mid(strIn, i, 1) 
     If InStr(1, " 1234567890~`[email protected]#$%^&*()_-+={}|[]\:'<>?,./" & Chr(34), sIn, vbTextCompare) = 0 Then sOut = sOut & sIn 
    Next i 
    invalidChars = sOut 
    Exit Function 

ErrorHandler: 
    invalidChars = strIn 
End Function 

을 워크 시트의 수식 당신이 찾고있는 고객 이름의 "중요"부분을 제공해야한다는 점에 유의하십시오.

관련 문제