在我的Excel工作簿中,出现了很多00XX
,其中X可以是任何数字。例如,0017
经常出现。我想使用00XX
函数删除所有出现的SUBSTITUTE
。到目前为止,我有这个:
=SUBSTITUTE(C1,"00[0-9][0-9]","")
这不起作用,我认为这是因为Excel将第二个字符串视为文字,而不是正则表达式。有没有办法让这个配方有效?我知道有些编程语言允许你在字符串中添加修饰符来改变它的含义,但是我还没有找到任何这样的东西用于Excel。
答案 0 :(得分:0)
此解决方案不使用 VBA
选择一个未使用的列,例如 K
列在 K1 中输入:
="00" & TEXT(ROW()-1,"00")
将其从 K2 通过 K100 复制下来。这是所有可能的"不受欢迎的"子串。
使用 A1 中的原始数据,在 B1 中输入数组公式:
=IFERROR(TRIM(SUBSTITUTE(A1,INDEX(K1:K100,MATCH(1,COUNTIF(A1,"*"&K1:K100&"*"),0)),"")),A1)
必须使用 Ctrl + Shift + 输入输入数组公式,而不仅仅是 Enter key。
如果 A1 包含:
t0078yetryet
B1 会显示:
tyetryet
答案 1 :(得分:0)
为什么不简单地利用SEARCH函数接受通配符的事实?
=REPLACE(A1,LOOKUP(2^15,FIND(TEXT(ROW(INDEX(A:A,1):INDEX(A:A,99)),"0000"),A1)),4,"")
请注意,到目前为止提出的两个解决方案都不会在给定字符串上替换多次出现的同时。
此致
答案 2 :(得分:0)
VBA UDF
,请使用=CleanString(A1)
测试
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