有没有办法在字符串中查找子字符串然后替换该子字符串及其前后的多个字符?
例如,我有这些:
Mandatory659852 y n n TRY RACE
Mechanica888654 y n n FRY SAME
GILLETE685254 y n n CRY FACE
我可以编程VBA来删除子字符串" y n n "
,包括子字符串左边的6个字符以及右边的3个字符吗?所以结果应该是:
"Mandatory RACE"
"Mechanica SAME"
"GILLETE FACE"
我无法在Google上搜索,因为我不知道该术语是什么。我知道我可以在VBA中使用.replace来替换子字符串,但我不知道如何使用像.replace(****** y n n ***)
答案 0 :(得分:8)
VBA:
您使用?
来匹配单个通配符。
只需突出显示单元格并运行此宏。
您也可以在“查找/替换”对话框中使用它。
Sub FixIt()
Selection.Replace "?????? y n n ???", "", xlPart
End Sub
答案 1 :(得分:3)
我使用了一个公式,因为你有一个非常常见的格式。如果值在A1中,则在B1中尝试:
= LEFT(A1,SEARCH(“y n n”,A1)-8)&右(A1,LEN(A1) - (SEARCH(“y n n”,A1)+8))
当然这取决于你总是有一个非常严格的格式,有6位数后跟一个空格,后跟一个“ynn”后跟一个空格,后跟一个3个字母的单词,然后是一个空格,然后是别的!!
答案 2 :(得分:1)
像这样,与BruceWayne一致,instr是搜索,我们使用mid,两者都可用作WS函数
Dim sINPUT As String
Dim sOUTPUT As String
sINPUT = "Mandatory659852 y n n TRY RACE"
sOUTPUT = Mid(sINPUT, 1, (InStr(1, sINPUT, " y n n") - 6) - 1)
sOUTPUT = sOUTPUT & Mid(sINPUT, 3 + (InStr(1, sINPUT, "y n n") + 1 + Len("y n n")))
Debug.Print sOUTPUT