セルをいくつかの部分文字列で検索する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回呼び出されます。
問題は、機能が非常に遅いことです。数百のセルに適用する必要があります。だから私はそれをどのようにスピードアップできるかについていくつかのアドバイスを期待していました。前もって感謝します。
よりもはるかに高速になります試みることができるあなたが探しする必要がありますか範囲内でテストされたすべての単語に対して 'Instr'のすべての可能なシナリオ?セルがその範囲内にあるかどうかテストしていますか? –
「If ... Then ... ElseIf ....」のようにチェックするのはどうですか? –
@ Wiktor Stribzew私は通常の 'If .... Then ... ElseIf ....'アプローチを考えましたが、コードを高速化することはできません。その理由は、この関数はしばしば 'InStr'ステートメントのどれも正の値を返しません(彼らのどれもが探している文字列を見つけられないので)ので、速度の向上はわずかです。 @シャイラドーはい。文字列に "単語"、 "他の単語"、 "別の単語"のいずれかが含まれているかどうかを確認する必要があります。私が確認する必要があるものは約20種類あります。 – Mas