Excel 替换VBA中字符的多个实例
我有下面的公式,我想转换成VBA中的函数Excel 替换VBA中字符的多个实例,excel,vba,function,replace,excel-formula,Excel,Vba,Function,Replace,Excel Formula,我有下面的公式,我想转换成VBA中的函数 =IFERROR(LEFT(B1,(FIND(",",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"(",","),"-",","),"/",","))-1)),SUBSTITUTE(B1,".", "")) 我试过一些方法,但就是不能让它正常工作。 但是,这个简单的函数将在更少的行中完成这一切: Function Scrub(text) With Application Scrub = Left(text, .
=IFERROR(LEFT(B1,(FIND(",",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"(",","),"-",","),"/",","))-1)),SUBSTITUTE(B1,".", ""))
我试过一些方法,但就是不能让它正常工作。
但是,这个简单的函数将在更少的行中完成这一切:
Function Scrub(text)
With Application
Scrub = Left(text, .Min(.Find(Array("(", ")", "-", "/", ","), text & "()-/,")) - 1)
End With
End Function
您也可以在VBA中使用正则表达式来实现这一点。 如果我理解正确,您希望用逗号替换字符串中
()/-
集合中的任何/所有字符
Option Explicit
Function CharacterSwap(S As String) As String
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[()/-]"
.Global = True
CharacterSwap = .Replace(S, ",")
End With
End Function
如果您碰巧在上面的.Pattern
中向character类添加了字符,您应该知道破折号-
必须是类中列出的第一个或最后一个字符
如果它位于其他位置,则将被解释为指示由前面和后面的字符限定的字符范围
换句话说
将包括所有数字李>[0-9]
只包括[-09]
、破折号
和0
9
=LEFT(B1,MIN(查找({“(“,”),“-”,“/”,“,”},B1&“()-/”))-1)
用Ctrl-shift键确认,而不是按Enter键确认。
Function Scrub(text)
With Application
Scrub = Left(text, .Min(.Find(Array("(", ")", "-", "/", ","), text & "()-/,")) - 1)
End With
End Function
Option Explicit
Function CharacterSwap(S As String) As String
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[()/-]"
.Global = True
CharacterSwap = .Replace(S, ",")
End With
End Function