删除string中的所有初始数字,直到达到非数字字符

我试图删除string的第一个数字(删除所有数字,直到达到第一个非数字字符)。 一些string的起始数字格式为"14 214" ,它应该读取14214 。 这是分隔数字的特殊空间,如果A1中的string以14 214开始

 ISNUMBER(LEFT(A1,3)*1)=TRUE 

所以这意味着空间不是问题,我只需要检查第一个非数字字符。

我想到了下面的VBAfunction:

 Function RemoveNumbers(Txt As String) As String i = 1 Do While i < 9 If (IsError(Left(Txt, i) * 1)) = "False" Then i = i + 1 Else RemoveNumbers = Right(Txt, Len(Txt) - i) End If Loop End Function 

但它返回#VALUE!

函数是否正确写入? 你有什么build议吗?

谢谢

沿着string从左到右,看每个字符。
如果char是一个空格什么都不做,如果它的一个数字用空格replace,否则返回删除了前导空格的string:

 Function RemoveNumbers(txt As String) As String Dim i As Long For i = 1 To Len(txt) Select Case Mid$(txt, i, 1) Case " ": Case "0" To "9": Mid$(txt, i, 1) = " " Case Else Exit For End Select Next RemoveNumbers = LTrim$(txt) End Function 

Alex K.的好解决scheme

我只想补充一点,原始程序的基本问题是,iserror 没有捕获到数字转换错误 – 只要发生这种情况,整个函数就退出了,你只是因为没有设置RemoveNumbers而得到值错误。 此外,当您离开(txt,i)=“14”时不会发生错误,但是只有在离开(txt,i)=“14 2”时才会出现下一个字符。 为了使它工作,你将不得不做这样的事情

 Function RemoveNumbers(Txt As String) As String On Error GoTo Handler i = 1 Do While i <= Len(Txt) firstNumber = Left(Txt, i) * 1 i = i + 1 Loop Handler: RemoveNumbers = Right(Txt, Len(Txt) - i + 1) End Function