У меня есть этот макрос:
Sub StringChecker()
Dim string_arr() As Variant
Dim k As Integer
Dim c As Range
Set c = ActiveSheet.[A1]
end_string = Array(" &", _
" TR", _
" SR", _
" DEFEN")
substring = Array(" SR ", _
" JR ")
Do While c <> "End Loop"
c.Offset(0, 1) = c
For k = 0 To UBound(end_string)
If Right(c, Len(end_string(k))) = end_string(k) Then
cleaner_string = Mid(c, 1, Len(c) - Len(end_string(k)))
End If
Next k
clean_string = cleaner_string
For l = 0 To UBound(substring)
clean_string = Replace(clean_string, substring(l), " ")
Next l
If clean_string = "" Then
clean_string = c
End If
c.Offset(0, 1) = clean_string
Set c = c.Offset(1, 0)
Loop
End Sub
Проблема в том, что, когда он находит в массиве символ, соответствующий текущей итерации строки, он в итоге копирует эту строку в каждую итерацию ячейки после этого.
Вот пример вывода:
Owner1 Owner1
BURDINES 1225 LLC BURDINES 1225 LLC
MIAMI-DADE COUNTY MIAMI-DADE COUNTY
RELATED GROUP OF FLORIDA & RELATED GROUP OF FLORIDA
BURDINES 1225 LLC RELATED GROUP OF FLORIDA
CITY OF MIAMI DEPT OF P & D RELATED GROUP OF FLORIDA
MIAMI-DADE COUNTY RELATED GROUP OF FLORIDA
FEC R R CO RELATED GROUP OF FLORIDA
BDG 200 SOUTH MIAMI AVE LLC RELATED GROUP OF FLORIDA
STATE OF FLORIDA DOT RELATED GROUP OF FLORIDA
Он копирует RELATED GROUP OF FLORIDA во время каждой итерации после того, как обнаруживает, что эта ячейка заканчивается символом &, который был частью нашего массива end_string.То же самое может происходить с массивом подстрок.Я внимательно посмотрел на это, и я не уверен, почему это происходит.Предполагается удалить все символы в ячейке, которые были найдены в массиве end_string и substring, и скопировать их в новую ячейку.Если индексы из массива не были найдены в строке, то он просто копирует исходную строку в столбец B. Также я использую строку «Конец цикла», потому что не могу проверить пустую строку, поскольку может быть 4 или 5 пустых ячеек.в столбце a ранее есть еще одна ячейка с содержимым, поэтому я не хочу, чтобы итерация просто остановилась только потому, что одна ячейка была пустой.
Спасибо за ответ