My sub сравнивает два списка строк и возвращает самые близкие совпадения. Я обнаружил, что подсистема попадает под некоторые общие слова, такие как «the» и «facility». Я хотел бы написать функцию, которая будет снабжена массивом слов, чтобы исключить и проверить каждую строку для этих слов и исключить их, если они найдены.Функция VBA, чтобы исключить части строки
Вот входной образец:
|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 будет проходить через наш f который будет проверять, чтобы эти слова были исключены. Вполне возможно, что не будет никаких слов, чтобы исключить, так что параметр должен быть дополнительно:
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
Там, наверное, несколько частей в этом коде, который не будет работать. Можете ли вы указать мне в правильном направлении?
Спасибо!
Как выглядит «океан», «становится« океаном »? Вы можете заменить 'the', но это даст вам« океанское видение », а не« Oceanview ». Будет ли исключен список ваших слов, включая специальные символы? –
Правильно, я должен отредактировать: дело здесь неважно (я вызываю LCASE на нем) – ZAR
Я не говорю о случае здесь :) Я говорю о 'запятой'. См. Ответ, размещенный ниже. Возможно, вам придется обновить страницу –