我在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) 是否有任何字符串函数可用于搜索任何单词(例如,源总记录)并查找后续冒号(:)的位置并提取冒号右侧的文本
如果我的问题很长或很模糊,我很抱歉。 欢迎任何澄清。
答案 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
作为参数。