我希望在"之后检索文本,因为"从字符串下面的单词。在下面的例子中,我想检索" 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)
尝试=MID(A1,FIND("for ",A1)+4,FIND(" ",A1,FIND("for ",A1)+4)-(FIND("for ",A1)+4))
假设您的文字位于单元格A1中,且模式为for <data> -
答案 1 :(得分: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在文本中的最后一个单词之前,该公式仍然有效。 A&#34;未找到&#34;答案也补充说。
答案 2 :(得分:0)
我的解决方案是在VBA中。下面的代码使用RegEx
来查找空格之间的所有单词。然后,一旦找到&#34;对于&#34;它就会循环遍历所有单词。它会引发一个标志,指示下一个单词(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
: