在文本VBA / Excel中提取数字

时间:2016-03-02 18:35:19

标签: string vba text numbers extract

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

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

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

在B1

中写下以下公式
=VALUE(LEFT(MID(A1,FIND("invnum:-",A1)+7,LEN((A1))),7)

给出的结果是-1234567

但是,源文件中引用号的长度是可变的,只想提取单词invnum后面的数字: -

想要在宏中包含这个公式,那么试着让任何想法/建议保持简单吗?

2 个答案:

答案 0 :(得分:0)

尝试此功能:

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

然后你可以从常规子调用它。

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

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

答案 1 :(得分:0)

让我们变得疯狂并逐步完成......

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

enter image description here