私のサブは文字列の 2 つのリストを比較し、最も近い一致を返します。サブが「the」や「facility」などの一般的な単語につまずくことがわかりました。除外する単語の配列を指定して、これらの単語の各文字列をチェックし、見つかった場合は除外する関数を作成したいと思います。
入力例を次に示します。
|aNames | bNames | words to exclude
|thehillcrest |oceanview health| the
|oceanview, the|hillCrest | health
意図した出力:
|aResults |bResuts
|hillcrest |hillcrest
|oceanview |oceanview
これまでのところ、私は持っています:
Dim ub as Integer
Dim excludeWords() As String
'First grab the words to be excluded
If sheet.Cells(2, 7).Value <> "" Then
For y = 2 To sheet.Range("G:G").End(xlDown).Row
ub = UBound(excludeWords) + 1 'I'm getting a subscript out of range error here..?
ReDim Preserve excludeWords(0 To ub)
excludeWords(ub) = sheet.Cells(y, 7).Value
Next y
End If
次に、二重ループを使用する比較関数は、列 A の各文字列を列 B と比較します。比較の前に、列 a と b の値は、これらの単語を除外するかどうかをチェックする関数を通過します。除外する単語がない可能性があるため、パラメーターはオプションにする必要があります。
Public Function normalizeString(s As String, ParamArray a() As Variant)
if a(0) then 'How can I check?
for i = 0 to UBound(a)
s = Replace(s, a(i))
next i
end if
normalizeString = Trim(LCase(s))
End Function
おそらく、このコードには機能しない部分がいくつかあります。私を正しい方向に向けることができますか?
ありがとうございました!