Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在VBA/Excel文本中提取数字_String_Vba_Text_Numbers_Extract - Fatal编程技术网

String 在VBA/Excel文本中提取数字

String 在VBA/Excel文本中提取数字,string,vba,text,numbers,extract,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一词后面的数字:- 希望在宏中包含此公式,因此尽量保持简单。请提供任何想法/建议?尝试此功能: Function

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

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

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

在B1中写下以下公式

=VALUE(LEFT(MID(A1,FIND("invnum:-",A1)+7,LEN((A1))),7)
给出的结果是-1234567

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

希望在宏中包含此公式,因此尽量保持简单。请提供任何想法/建议?

尝试此功能:

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))

让我们疯狂一点,慢慢来

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


我想数字后面还有其他单词吗?您能在两个单元格中显示整个字符串吗?2016年2月29日的到期金额基于invnum:-1234567计算基于123.33*3.0 2016年3月的到期金额基于invnum:-178634计算基于345.90*56.85根据请求修改2016年2月3日的部分到期金额基于invnum:-178634计算基于89.54*5.32Hi Scott-我在单元格A1、A2、A3等中有上述内容。@Sas请单击答案旁的灰色/绿色复选标记,将其标记为正确。它将把问题标记为已回答。这是只有你才能做的事。