2017-03-07 96 views
2

我想從下面的字符串中檢索「for」字之後的文本。在下面的例子中,我想檢索「for」字後面反映的「GLDSK8716」。我嘗試了下面的公式,但它在「for」之後檢索所有文本。我只想檢索「GLDSK8716」。在特定單詞之後提取文本

這是所用式I:

=TRIM(MID(R2,SEARCH("For",R2)+LEN("for"),255)) 

字符串:

Completion Notification for GLDSK8716 - Derivative Contracts - Futures, Forwards, Swaps, and Options 
+0

你嘗試過任何下文提供的答案?嘗試提供反饋並將標記標記爲「答案」,最終使用的結果爲 –

回答

0

嘗試=MID(A1,FIND("for ",A1)+4,FIND(" ",A1,FIND("for ",A1)+4)-(FIND("for ",A1)+4))

假設你的文本是在單元格A1和圖案是for <data> -

+0

我將錯誤顯示爲子查找或功能沒有在FIND上定義(「 –

+0

」)您是否可以粘貼完整的錯誤。 ? –

0

這是我與VBA的版本:

Option Explicit 

Public Function ExtractAfterWord(rngWord As Range, strWord As String) As String 

    On Error GoTo ExtractAfterWord_Error 

    Application.Volatile 

    Dim lngStart  As Long 
    Dim lngEnd   As Long 

    lngStart = InStr(1, rngWord, strWord) 
    If lngStart = 0 Then 
     ExtractAfterWord = "Not Found" 
     Exit Function 
    End If 
    lngEnd = InStr(lngStart + Len(strWord) + 1, rngWord, " ") 

    If lngEnd = 0 Then lngEnd = Len(rngWord) 

    ExtractAfterWord = Trim(Mid(rngWord, lngStart + Len(strWord), lngEnd - lngStart - 2)) 



    On Error GoTo 0 
    Exit Function 

ExtractAfterWord_Error: 

    ExtractAfterWord = Err.Description 

End Function 

代碼(if lngEnd = 0)中的條件是爲了確保即使for在文本中的最後一個單詞之前,該公式也能正常工作。 「未找到」答案也被添加。

enter image description here

0

我的解決方案是在VBA中。下面的代碼使用RegEx來查找空格之間的所有單詞。然後它循環遍歷所有單詞,一旦找到「for」,它就會引發一個標誌來指示下一個單詞(RegEx.Match)是您正在尋找的單詞。

代碼

Option Explicit 

Sub ExtractNumbers() 

Dim Reg1 As Object 
Dim RegMatches As Variant 
Dim Match As Variant 
Dim NextWord As Boolean 

Set Reg1 = CreateObject("VBScript.RegExp") 
With Reg1 
    .Global = True 
    .IgnoreCase = True 
    .Pattern = "\w{1,50}" ' Match any set of characters up to length of 50, untill a space 
End With 

Set RegMatches = Reg1.Execute(Range("R2").Value) 
NextWord = False ' <-- reset flag 
If RegMatches.Count >= 1 Then   
    For Each Match In RegMatches 
     If NextWord Then 
      MsgBox "The word you are looking for is '" & Match & "'" 
      Exit Sub 
     End If 
     If UCase(Match) Like "FOR" Then NextWord = True '<-- "for" found >> raise flag up 
    Next Match 
End If 

End Sub 

你的細胞R2線的屏幕截圖,並導致MsgBox

enter image description here

相關問題