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))

Excel结果

当然,这取决于你总是有一个非常严格的格式,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