後方 vlookup を実行しようとしています。
持つ: 文章 (文字列) 探す: キーワード (配列)
if(iserr(find("Missing",B1,1)),if(iserr(find("Located",B1,1)),.. でかなりクレイジーな複合ステートメントを実行できることはわかっています。
しかし、これを 1,000 回使用する必要があることを考慮すると、if then の深さは 18 になります。それは意味がありません。私はこれをVBAでかなり明確に行うことができることを知っていますが、構文を理解できないようです.
これが私がこれまでに持っているものです:
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() 関数の実行中に死ぬだけです。