Excel VBA复杂stringreplace
有没有办法在一个string中find一个子string,然后在它之前和之后replace该子string和一些字符?
例如,我有这些:
Mandatory659852 ynn TRY RACE Mechanica888654 ynn FRY SAME GILLETE685254 ynn CRY FACE
我可以编程VBA删除子string" ynn "
包括子string左侧的任何6个字符,无论其右侧的3个字符? 所以结果应该是:
"Mandatory RACE" "Mechanica SAME" "GILLETE FACE"
我无法search谷歌,因为我不知道这个词是什么。 我知道我可以在VBA中使用.replace来代替子string,但我不知道如何使用通配符.replace(****** ynn ***)
VBA:
你用?
匹配单个通配符。
只需突出显示单元格并运行此macros。
您也可以在查找/replace对话框中使用它。
Sub FixIt() Selection.Replace "?????? ynn ???", "", xlPart End Sub
我用了一个公式,因为你有一个相当常见的格式。 如果该值在A1中,则在B1中尝试:
= A1,LEN(A1) – (SEARCH,“ynn”,A1)+8))
当然,这取决于你总是有一个非常严格的格式,6位数字后跟一个“ynn”后跟一个空格,接着是一个3个字母的单词,然后是一个空格,然后是别的!
像这样的,与BruceWayne一致,instr是search,我们正在使用mid,都可以作为WSfunction
Dim sINPUT As String Dim sOUTPUT As String sINPUT = "Mandatory659852 ynn TRY RACE" sOUTPUT = Mid(sINPUT, 1, (InStr(1, sINPUT, " ynn") - 6) - 1) sOUTPUT = sOUTPUT & Mid(sINPUT, 3 + (InStr(1, sINPUT, "ynn") + 1 + Len("ynn"))) Debug.Print sOUTPUT