如何在excel vba中搜索单词之后的冒号后提取值

时间:2015-03-11 07:11:05

标签: string excel vba excel-vba

我在excel的单个单元格中有以下数据。 我需要编写一个VBA excel宏来从以下数据中提取一些数据。

****************** AUDIT REPORT RUN STATISTICS***********

Environment                   : PROD

Job Name                      : CLM_E_CLMHUB_GDWCLM_4017_D_MAIG

Server Name                   : etlprod-grid.ent.rt.csaa.com

Server IP Address             : 172.26.137.11

Source Success Count          ( s_m_extract_maig_req / V_GW_INT_CLS_MAIG ) : 691

Source Reject Count           ( s_m_extract_maig_req / V_GW_INT_CLS_MAIG ) : 0

Target Success Count          ( s_m_extract_maig_req / CLM_E_CLMHUB_GDWCLM_4017_D_MAIG.xml ) : 691

Target  Reject Count          ( s_m_extract_maig_req / CLM_E_CLMHUB_GDWCLM_4017_D_MAIG.xml ) : 0

SUMMARY

Source Total Records          : 691

Target Total Records          : 691

ETL Start                     : 02/25/2015 21:30:00

ETL End                       : 02/25/2015 21:30:15

ETL Duration(HH:MI:SS)        : 00 days 00:00:15

Business Day                  : 02/25/2015 21:30:16

Run Day                       : 2015-02-25T00:00:00-07:00

Status                        : JOB_ENDED_SUCCESSFULLY

我需要通过搜索相同的文本并获取下一个冒号之后和下一个新行之前的数字来获取源总记录的值。(即691) 是否有任何字符串函数可用于搜索任何单词(例如,源总记录)并查找后续冒号(:)的位置并提取冒号右侧的文本

如果我的问题很长或很模糊,我很抱歉。 欢迎任何澄清。

2 个答案:

答案 0 :(得分:1)

非VBA解决方案(如果源文本位于单元格A1中):

A2: =SEARCH(":",A1,SEARCH("Source Total Records",A1))
A3: =SEARCH(CHAR(10),A1,A2)
A4: =VALUE(MID(A1,A2+2,A3-A2-2))

答案 1 :(得分:0)

这样的事情对你有用:

Sub getSourceTotalRecords()
    target = "Source Total Records"

    inputData = Cells(1, 1) 'or wherever your text is
    dataLines = Split(inputData, vbNewLine)

    For Each l In dataLines
        If Left(l, Len(target)) = target Then
            colonLocation = InStr(l, ":")
            MsgBox Mid(l, colonLocation + 1)
            Exit For 'if you're not looking for multiple hits
        End If
    Next l
End Sub

这将MsgBox值。您可能希望将其更改为使用它执行其他操作。如果要检索其他数据,您可以对此进行调整以将target作为参数。