簡體   English   中英

VBA:多個關鍵字vlookup

[英]VBA: Multiple Keyword vlookup

我有一些敘述性描述,需要在Excel中自動進行分類:

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

我還有另一個工作表,其中包含關鍵字以及與關鍵字相關聯的類別:

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

到目前為止,我的代碼一次只能搜索一個關鍵字,因此會報告錯誤的答案,因為在多個敘述中使用了一些關鍵字:

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    

我見過像算法, 可是我覺得我的目標可以簡單完成所有的敘述都是比較簡單的。

謝謝閱讀!

通過創建將多個值連接在一起的“匹配列”,然后在該列中搜索匹配項,可以將多個列與VLOOKUP匹配。

因此,如果您在A列中使用此公式:

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

然后,您可以針對該匹配列進行VLOOKUP:

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

它將匹配在B列中具有“ blah”,在C列中具有“ bleh”和在D列中具有“ ugh”的一行,並在E列中返回值。

不過,對於您的數據,我想您可能還想在嘗試匹配一組關鍵字之前先整理一下輸入內容。 如果關鍵字是按特定順序排列的,並且沒有任何非關鍵字會造成混亂,那么我上面描述的方法最有效。 (它對於要匹配多個數據的vlookups也非常有用,例如,不同列中的名字,中間名和姓氏)

否則,您可能最終需要在類別表中包含大量行,以涵蓋關鍵字以及它們可能伴隨的其他隨機單詞的所有可能組合和排列。

這就是我想要的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM