我試圖做一個向後VLOOKUP。如何檢查一個值,看看它是否包含18個值
有:句子(字符串) 尋找:關鍵詞(陣列)
我知道我可以做一個比較瘋狂的複合語句 IF(ISERR(找到( 「失蹤」,B1,1)),如果(iserr(find(「Located」,B1,1)),..
但是考慮到我需要使用這1000次,如果那麼就是18深,那只是沒有意義。 我知道我可以用VBA做到這一點相當clealy,但我似乎無法找出語法
這裏是我到目前爲止:
Function FindValue(ByRef strToSearch As String, rngLookUpValues As Range) As String
On Err GoTo err_capture
'strToSearch is the sentence I am searching
'rngLookUpValue is a two column Range.
' The first column is what I'm searching for. If it exists in the sentence,
' return the second column
' The second column is the category that applies when the word from column one
' is found in the sentence
i = 0
For Each row In rngLookUpValues
i = i + 1
If InStr(1, strToSearch, row.cell(i, 1).Value, vbTextCompare) > 0 Then
FindValue = row.cell(i, 2).Value
End If
Next
Exit Function
err_capture:
Debug.Print Err.Number & ": " & Err.Description
End Function
當我運行它時,它返回一個#Value。但是當我調試它或看它運行時,沒有錯誤。它只是在instr()函數中死掉。
讓我們明確一點:你在EXCEL調用FindValue,所以FindValue是UDF。 您呼叫FindValue像「= FindValue(‘失蹤’,B1:C5)」 要匹配「失蹤」對B1:B5,並返回該行的C列的值。 --->你應該使用VLOOKUP 或者你通過 = FindValue(「一些值範圍相匹配」,「一定範圍內的值來匹配」) – Larry