使Excel公式将string视为正则expression式

在我的Excel工作簿中,有很多00XX的事件,其中X可以是任何数字。 例如, 0017频繁出现。 我想使用SUBSTITUTEfunction删除所有出现的00XX 。 到目前为止,我有这样的:

 =SUBSTITUTE(C1,"00[0-9][0-9]","") 

这不工作,我认为这是因为Excel将第二个string视为一个文字,而不是一个正则expression式。 有没有办法使这个公式的工作? 我知道一些编程语言允许你添加修饰符到一个string来改变它的含义,但是我还没有发现任何这样的事情。

该解决scheme不使用VBA

选一个未使用的专栏,说K

K1中input:

 ="00" & TEXT(ROW()-1,"00") 

K2K100拷贝下来。 这是所有可能的“不良”子string的列表。

使用A1中的原始数据,在B1中input数组公式:

 =IFERROR(TRIM(SUBSTITUTE(A1,INDEX(K1:K100,MATCH(1,COUNTIF(A1,"*"&K1:K100&"*"),0)),"")),A1) 

数组公式必须使用Ctrl + Shift + Enterinput,而不仅仅是Enter键。

如果A1包含:

t0078yetryet

B1会显示:

tyetryet

  1. 使用更多的function插件(networking链接似乎是通灵
  2. 下面的VBA UDF ,使用如=CleanString(A1)

testing

 Sub TestDaCode() MsgBox CleanString("0018 2450 00notme 0017") End Sub 

UDF

 Function CleanString(strIn As String) As String Dim objRegex As Object Set objRegex = CreateObject("vbscript.regexp") With objRegex .Global = True .Pattern = "00\d{2}" CleanString = .Replace(strIn, vbNullString) End With End Function 

为什么不简单地利用SEARCHfunction接受通配符的事实呢?

=REPLACE(A1,LOOKUP(2^15,FIND(TEXT(ROW(INDEX(A:A,1):INDEX(A:A,99)),"0000"),A1)),4‌​,"")

请注意,迄今为止提出的两个解决scheme都不会在给定的string上同时replace多个这种子string。

问候