我有一个这样的输入: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”开头的行,并在第一个“KP”后保存6个字符/ int,在第二个“KP”后保存为6个chars/int。然后搜索整个数据集(列A中的数百行),如果它们包含字符串i,并且如果是,则将其替换为字符串k。并循环这一点。所以它会用另一条以“kap”开头的行来做同样的事情。代码给我错误消息:第二次涉及到“列(”A“)...”时,下标超出范围。你能帮我吗?
预先感谢您
是的,我们可以帮你,但是这是[你昨天的职位(的延伸https://stackoverflow.com/questions/40508377/vba-search-for-value-in-a-column -after-specific-pattern),所以请在那里移动你的修改。谢谢。 –
@PierreChevallier嗨!通常的做法是什么?只需从昨天编辑我的问题与这一个?或作为新的评论或如何?谢谢 –
对您以前的帖子发表评论,说明您收到的错误是什么,如果它是由用户的回答提供的,请在用户的评论部分回复,以便他/她可以帮助您。 –