使用VBA删除数字周围的文本

时间:2014-01-13 07:21:35

标签: excel excel-vba vba

我需要从单元格中的数字中删除所有文本,然后将这两个数字拆分为两个单元格,并将其格式化为数字,而不是文本。单元格包含以下格式的文本/数字:

between 150,000 and 159,999 per annum
between 60 and 65 per hour
between 70.00 and 74.00 per hour

屏幕截图1(之前):

可能有1000多条其他线路,它们总是在H2开始。任何一方都有被占用的细胞。

如果可能的话,代码需要构成一个更大的宏的一部分,这个宏之前和之后都有动作,所以能够将它复制并粘贴到中间是很棒的。

所需结果(之后):

以下是示例文档的链接,因为我不确定如何在此处上传 - http://www.filedropper.com/sample_13

1 个答案:

答案 0 :(得分:2)

请执行以下步骤:

  1. 在H&之间手动添加列我开头应该是空的。
  2. 将此功能添加到您的VBA项目中:

    Public Function GetNthNumberAlternative(sMark As String, iOrder As Integer) As String
    
    'regexp declaration
    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")
    
    With objRegExp
        .Global = True
        .Pattern = "\d+[.,]\d+|\d+"
            GetNthNumberAlternative = .Execute(sMark)(iOrder - 1).Value
    
    End With
    
    End Function
    
  3. 将此子例程添加到您的VBA项目中:

    Sub Run_Function()
    
    Dim Cell As Range, tmpText As String
    For Each Cell In Selection.Cells
        tmpText = Cell.Value
        Cell = GetNthNumberAlternative(tmpText, 1)
        Cell.Offset(0, 1) = GetNthNumberAlternative(tmpText, 2)
    Next Cell
    End Sub
    
  4. 选择要处理的H列中的单元格范围(提示:在开头选择2-3以理解该想法)

  5. 运行Run_Function()子程序...

  6. 尝试过&测试了您提供的样本数据!