2016-06-23 4 views
0

내가 Excel에서 자동으로 분류 할 필요가 서술 설명의 번호를 가지고 :VBA : 여러 키워드 VLOOKUP

Keyword 1 Keyword 2 Keyword 3 Category 
cleaned  valve   a   A 
installed valve   a   B 
updated  os      C 
installed  os      D 
:

Description      Category 
I updated the o.s. 
I installed the o.s.  
I cleaned valve a 
I cleaned valve b 
I installed valve a 
Today the o.s. was updated 

나는 키워드를 다른 워크 시트와 키워드와 관련된 카테고리를 가지고

내 코드는 한 번에 하나의 키워드 만 검색 할 수 있으므로 일부 키워드가 여러 내러티브에서 사용되기 때문에 잘못된 대답을보고합니다.

Public Function Test21(nar As Range, ky As Range) As String 

Dim sTmp As String, vWrd As Variant, vWrds As Variant 

'Splits Fsr Narrative into individual words so it can be searched for keywords' 
vWrds = Split(nar) 

For Each vWrd In vWrds 

    If Not IsError(Application.VLookup(vWrd, ky, 3, False)) Then 
    sTmp = Application.VLookup(vWrd, ky, 3, False) 
    Exit For 
    End If 
Next vWrd 

Test21 = sTmp 

End Function  

this과 같은 알고리즘을 보았지만 모든 내러티브가 상대적으로 간단하기 때문에 내 목표를 달성하는 것이 더 간단 할 수 있다고 생각합니다.

읽어 주셔서 감사합니다.

+0

'vWrds = 분할 (NAR)'는'split'에 대한 구분이 필요합니다. – findwindow

+0

좀 더 구체적으로 말하자면, 당신의 예제에 따라'nar'를'(space)'로 구분해야합니다 ...'vWrds = Split (nar, "")' –

답변

0

이 내가 찾던입니다 :

Public Function Test22(nar As Range, key As Range, cat As Range) As String 

For r = 1 To key.Height 
If InStr(nar, key(r, 1)) And InStr(nar, key(r, 2)) Then 
Test22 = cat(r) 
Exit For 
End If 
Next r 

End Function 
0

여러 값을 함께 연결 한 다음 "일치 항목"을 만들어 일치 항목을 검색하여 VLOOKUP에 여러 항목을 일치시킬 수 있습니다.

그래서 당신은 열 A에서 공식 사용하는 경우 :

=B1 & "|" & C1 & "|" & D1 

을 할 수 있습니다 일치하는 항목에 대하여 다음 VLOOKUP :

=VLOOKUP("blah|bleh|ugh", 'Sheet2!A1:E100', 5, FALSE) 

열에서 "ㅋ"를 가지고있는 하나 개의 행을 일치합니다 B 열, C 열의 "bleh"열 및 D 열의 "ugh"값을 반환하고 E 열의 값을 반환합니다.

데이터에 대해서는 이전에 입력을 정리하기위한 단계가 필요할 수도 있습니다. 시도하다 한 세트의 키워드와 일치시킵니다. 위에서 설명한 방법은 키워드가 특정 순서에 있고 비 키워드가 사물을 어지럽히 지 않는 경우에 가장 효과적입니다. (다른 열의 이름, 중간 이름 및 성 등 여러 데이터 조각을 일치시키려는 가상보기에서도 우수하게 작동합니다.

그렇지 않으면 엄청나게 많은 수의 행이 필요하게 될 수 있습니다. 카테고리 표를 사용하여 키워드 및 다른 임의의 단어가 조합 될 수있는 모든 조합과 순열을 설명합니다.