У меня есть вход, как это:VBA: поиск, сохранение и заменить строки в соответствии с условиями
gen,N,,,GONGD,,,N,,,KL,0007bd,,,,,,,,TAK,
gen,N,,,RATEC,,,N,,,KP,0007bc,,,,,,,,TAZ,
kap,N,,,EBFWE,N,,,,,,,,,KP,002bd4,,,KP,123000,,,,,N,,,,P
kap,N,,,ST,WEIT,E3,EBFWEI,,,KP,002bd2,N,,,,,,KP,002bd3,,,,,,,Z,MG00,,,,,N,,,,P
У меня есть такой код:
Sub Find()
Dim rFoundAddress As Range
Dim sFirstAddress As String
Dim x As Long
With ThisWorkbook.Worksheets("Sheet1").Columns(1)
Set rFoundAddress = .Find("kap,*", LookIn:=xlValues, LookAt:=xlWhole)
If Not rFoundAddress Is Nothing Then
sFirstAddress = rFoundAddress.Address
Do
Dim WrdArray() As String
Dim text_string As String
Dim i As String
Dim k As String
Dim num As Long
text_string = rFoundAddress
WrdArray() = Split(text_string, "KP,")
i = Left(WrdArray(1), 6)
k = Left(WrdArray(2), 6)
Columns("A").Replace What:=i, _
Replacement:=k, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
MatchCase:=False, _
SearchFormat:=False, _
ReplaceFormat:=False
Set rFoundAddress = .FindNext(rFoundAddress)
Loop While Not rFoundAddress Is Nothing And _
rFoundAddress.Address <> sFirstAddress
End If
End With
End Sub
То, что я пытаюсь сделать: Найдите все строки, начинающиеся с «kap» и сохраните 6 символов/int после первого «KP» как i и 6 символов/int после второго «KP» как k. Затем выполните поиск всего набора данных (сотни строк в столбце A), если они содержат строку i, и если да, то замените ее на строку k. И зацикливать это. Поэтому он будет делать то же самое с другой строкой, начинающейся с «kap». Код дает мне сообщение об ошибке: Подзаголовок вне диапазона, когда дело доходит до «Столбцы (« A ») ...» во второй раз. Не могли бы вы мне помочь?
СПАСИБО ЗАРАНЕЕ
Да, мы можем помочь вам, но это расширение [Ваш пост вчера] (https://stackoverflow.com/questions/40508377/vba-search-for-value-in-a-column -after-specific-pattern), поэтому, пожалуйста, переместите туда свои модификации. Благодарю. –
@PierreChevallier Привет! Каков общий способ сделать это? Просто отредактируйте мой вопрос со вчерашнего дня с этим? Или как новый комментарий или как? Спасибо –
Прокомментируйте ваше предыдущее сообщение о том, какая ошибка вы получите, если она предоставлена ответом пользователя, ответьте в разделе комментариев пользователя, чтобы он/она вам помогли. –