我一直在路过几个与我的问题非常相似的线程。但是,有各种解释可能不适用于我的情况。我有这个“常规”excel公式:
={IF(OR(ISNUMBER(SEARCH($O$2:$O$2000,A2))), INDEX($P$2:$P$2000, MATCH(TRUE, ISNUMBER(SEARCH($O$2:$O$2000, A2)),0)), "")}
我想使用以下参数将其转换为Excel VBA函数
FUNCTION ADVLOOKUP(TAG, SENTENCESTOLOOKAT, WORDSTOLOOKUP)
TAG =表示ORIGINAL FORMULA上的P列,它将放在代表SENTENCESTOLOOKAT的每个单元格/行旁边
SENTENCESTOLOOKAT =表示公式中要定位的A2或A列上的任何单元格。这是一个包含任何一个WORDSTOLOOKUP
的句子WORDSTOLOOKUP =表示列O,它是在每个SENTENCESTOLOOKAT上检查的单词的清单
抱歉,我无法发布Excel文件,因为显然我的声誉/代表点很低。 :(但我很感激,如果你可以建议是否可以将所述Excel公式转换为UDF。
谢谢!
答案 0 :(得分:0)
要仅返回一个值,您可以使用一个简单的调用来评估:
Function ADVLOOKUP(TAG As Range, SENTENCESTOLOOKAT As Range, WORDSTOLOOKUP As Range)
ADVLOOKUP = SENTENCESTOLOOKAT.Worksheet.Evaluate("INDEX(INDEX(" & TAG.Address & ",MATCH(TRUE,ISNUMBER(SEARCH(" & _
WORDSTOLOOKUP.Address & "," & SENTENCESTOLOOKAT.Address & ")),0)),)")
End Function