如何从Excel单元格中删除所有由空格分隔的数字字符?

时间:2018-08-09 15:51:35

标签: excel excel-vba excel-formula

我只需要删除Excel单元格中文本字符串中用空格分隔的数字字符。例如,我有:

johndoe99@mail.com 1 concentr8工作VARIABLE1 99

我需要获得:

johndoe99@mail.com concentr8关于工作变量1

公式或VBA脚本解决方案都不错。谢谢。

3 个答案:

答案 0 :(得分:1)

我认为正则表达式可能是一个更简单的选择,这对游牧民族是正确的。但是,我也认为通过使用msSystem.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可用于将字符串拆分为单词数组,并用空格隔开
  • 如果任何 word 不是数字,则返回该 word ,否则返回空字符串
  • 然后使用TEXTJOIN函数将各段连接起来。