使用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开始。 有任何一方被占用的单元格。

如果可能的话,代码需要形成一个更大的macros的一部分,在之前和之后都有动作,所以能够将它复制并粘贴到中间是非常好的。

预期结果(之后):

这里是一个示例文档的链接,因为我不知道如何在这里上传 – http://www.filedropper.com/sample_13

请运行以下步骤:

  1. 在H&I之间手动添加应该在开始处应该为空的列。
  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. select要处理的列H中的单元格区域(提示:在开始时select2-3来理解该想法)

  5. 运行Run_Function()子程序…

为您提供的样本数据进行了试验和testing!