【问题标题】:Extract numbers within text VBA/Excel在文本 VBA/Excel 中提取数字
【发布时间】:2016-03-02 18:35:18
【问题描述】:

寻找一些建议来调整/增强我创建的公式,从字符串中提取数字。

在单元格 A1 中有以下示例文本:

基于invnum:-1234567 计算基于123.33*3.00

在B1中写下公式

=VALUE(LEFT(MID(A1,FIND("invnum:-",A1)+7,LEN((A1))),7)

给出的结果是-1234567

但是,我的源文件上的参考编号的长度是可变的,希望只提取单词 invnum 后面的数字:-

希望将此公式包含在宏中,因此请尽量保持简单,有什么想法/建议吗?

【问题讨论】:

  • 我假设数字后面还有其他词?你能在几个单元格中显示整个字符串吗?
  • 2016 年 2 月 29 日到期的金额基于 invnum:-1234567 计算基于 123.33*3.0
  • 2016 年 3 月 1 日到期的金额基于 invnum:-178634 计算基于 345.90*56.85 根据要求修改
  • 2016 年 3 月 2 日到期的部分金额基于 invnum:-178634 计算基于 89.54*5.32
  • 嗨,斯科特 - 我在单元格 A1、A2、A3 等中有上述内容..

标签: string vba text numbers extract


【解决方案1】:

试试这个功能:

Function findNumber(inPtStr As String) As Double
    Dim strArr() As String
    Dim i As Long
    inPtStr = Replace(inPtStr, ":", " ")
    strArr = Split(inPtStr)
    For i = LBound(strArr) To UBound(strArr)
        If IsNumeric(strArr(i)) Then
            findNumber = --strArr(i)
            Exit Function
        End If
    Next i
End Function

然后你可以从一个普通的 sub 调用它。

如果你想要一个公式,那么:

=--TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),FIND("invnum:",SUBSTITUTE(A1," ",REPT(" ",99)))+7,99))

【讨论】:

  • @Sas 请通过单击答案旁边的灰色/绿色复选标记标记为正确。它会将问题标记为已回答。这是只有你才能做的事情。
【解决方案2】:

让我们发疯,一步一步来……

从需要查找的中间索引开始,例如数字字符串的开始、结束和长度。一旦你有了这些,只需小心重新组合你的公式:

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 2021-06-01
    • 2011-11-09
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多