【问题标题】:Removing text around a number using VBA使用 VBA 删除数字周围的文本
【发布时间】:2014-01-15 00:29:04
【问题描述】:

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

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

【问题讨论】:

  • 很高兴看到 OP.Close 的回应被撤回。

标签: excel vba


【解决方案1】:

请运行以下步骤:

  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. 在H列中选择您要处理的单元格范围(提示:开头选择2-3以了解想法)

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

对您提供的样本数据进行了尝试和测试!

【讨论】:

  • 对不起各位,我是论坛的新手,很抱歉,我没有花足够的时间阅读规则。我花了一些时间创建自己的解决方案,这是一种文本到列的方法,然后删除不需要的列。通过解释我的尝试,我一定会在未来坚持论坛规则。再次抱歉。 KazJaw,非常感谢您的解决方案!
猜你喜欢
  • 2013-05-25
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 2018-08-03
  • 2017-11-17
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
相关资源
最近更新 更多