我只需要删除Excel单元格中文本字符串中用空格分隔的数字字符。例如,我有:
johndoe99@mail.com 1 concentr8工作VARIABLE1 99
我需要获得:
johndoe99@mail.com concentr8关于工作变量1
公式或VBA脚本解决方案都不错。谢谢。
答案 0 :(得分:1)
我认为正则表达式可能是一个更简单的选择,这对游牧民族是正确的。但是,我也认为通过使用ms
和System.currentTimeMillis()
函数,我在这里提出了一个好的解决方案。
INSERT
答案 1 :(得分:0)
UDF
Function RemNum(cell)
With CreateObject("VBScript.RegExp")
.Global = True: .Pattern = "\s\d+"
RemNum = .Replace(cell, vbNullString)
End With
End Function
答案 2 :(得分:0)
请注意,除了测试之前和之后的空格外,这还将测试字符串的开头或结尾作为定界符。
您没有指出数字是字符串唯一内容的情况。该例程将删除它,但是,如果您需要其他内容,请指定。
尝试一下:
Function remSepNums(S As String) As String
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "(?:\s+|^)(?:\d+)(?=\s+|$)"
.MultiLine = True
remSepNums = .Replace(S, "")
End With
End Function
只是为了好玩,如果您具有最新版本的Excel(Office 365/2016),则可以使用以下数组公式:
=TEXTJOIN(" ",TRUE,IF(NOT(ISNUMBER(FILTERXML("<t><s>"&SUBSTITUTE(TRIM(A1)," ","</s><s>")&"</s></t>","//s"))),FILTERXML("<t><s>"&SUBSTITUTE(TRIM(A1)," ","</s><s>")&"</s></t>","//s"),""))
FILTERXML
可用于将字符串拆分为单词数组,并用空格隔开TEXTJOIN
函数将各段连接起来。