2017-03-07 1 views
2

아래의 문자열에서 "for"단어 다음에 나오는 텍스트를 검색하고 싶습니다. 아래 예에서 "for"단어 뒤에 반영되는 "GLDSK8716"을 검색하려고합니다. 나는 공식 아래에서 시도했지만 "for"뒤에 모든 텍스트를 가져옵니다. "GLDSK8716"만 검색하고 싶습니다.특정 단어 다음에 텍스트 추출

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

문자열 :

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

아래 제공되는 답변 중 하나를 시도? –

답변

0

텍스트 셀 A1에 가정 =MID(A1,FIND("for ",A1)+4,FIND(" ",A1,FIND("for ",A1)+4)-(FIND("for ",A1)+4))

을 시도하고 패턴이 for <data> -

+0

FIND에 정의되지 않은 Sub 또는 함수로 오류가 발생합니다 (" –

+0

전체 오류를 붙여 넣을 수 있습니까? 또한 A1 셀에 데이터가 있습니까? ? –

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

관련 문제