我有一个UDF在单元格中搜索几个子字符串。公式的输出取决于找到的子字符串:
Function StringSearch(Rge As Range) As String
Dim Str As String, Output As String
Str = Rge.Value
If InStr(Str, "words") > 0 Then Output = "Output 1"
If InStr(Str, "other words") > 0 Then Output = "Output 2"
If InStr(Str, "different words") > 0 Then Output = "Output 3"
StringSearch = Output
End Function
我在这里包含了缩减形式的函数 - 实际上,InStr函数被调用大约20次以搜索不同的字符串。
问题是功能很慢。它需要应用于数百个细胞。所以我希望能就如何加快速度提出一些建议。提前谢谢。
答案 0 :(得分:0)
不确定它是否会产生太大影响,但您可以尝试使用Like
运算符
Function StringSearch(s As String) As String
If s Like "*words*" Then StringSearch = "Output 1": Exit Function
If s Like "*other words*" Then StringSearch = "Output 2": Exit Function
If s Like "*different words*" Then StringSearch = "Output 3": Exit Function
End Function
但Excel函数会比UDF快得多
= If( CountIf( A1, "*words*" ), "Output 1",
If( CountIf( A1, "*other words*" ), "Output 2",
If( CountIf( A1, "*different words*" ), "Output 3", "" )