从单元格中删除特定的string

我有一系列的单元格文本

制造商#||#过山车#|#|宽度(从一边到另一边)#||#20“W ####高度(从底部到顶部)#|| 35”H#|#|深度(从前到后) #||#20.5“D ####座椅深度#||#14.25”**#|#|材料&结束#### **组成#||木材和固体#|#|作曲#|| #金属#|#|样式元素####样式#||#当代#|#|风格#||#rest

从这个单元格中,我需要删除#|#“”needtoremove“####之间的string,而不会影响其他string。 我试过查找和replace,find#|#| * ####并用#|#|replace它。 然而它没有给出确切的结果。

谁能帮我?

另一个解决scheme将删除第一个#|#|之间的任何东西 和####,事件#||#等

如果您只需要删除#|#|之间的文本 和####只有当没有其他## || 在中间,我认为最简单的方法是使用正则expression式。

您将需要在VBA编辑器的Tools-> References中激活Microsoft VBScript Regular Expressions 5.5库。

将范围(“D166”)更改为您的手机所在的位置。 现在的expression式(“#\ |#\ | [A-Za-z0-9&] * ####”)匹配任何以#|#|开始的文本,以####结尾并且具有任意数量的字母数字字符和空间。 如果需要的话,你可以在刹车之间添加其他的字符。

 Sub remove() Dim reg As New RegExp Dim pattern As String Dim replace As String Dim strInput As String strInput = Range("D166").Value replace = "" pattern = "#\|#\|[A-Za-z0-9& ]*####" With reg .Global = True .MultiLine = True .IgnoreCase = False .pattern = pattern End With If reg.test(strInput) Then Range("D166").Value = reg.replace(strInput, replace) End Sub 

像这样的东西。

如果该值在单元格A1中

 Dim str As String Dim i As Integer Dim i2 As Integer Dim ws As Excel.Worksheet Set ws = Application.ActiveSheet str = ws.Range("A1").Value i = InStr(str, "#|#|") i2 = InStr(str, "####") str = Left(str, i) & Right(str, Len(str) - i2) ws.Range("A1").Value = str