我正在尝试使用函数InStr
在另一个字符串中查找特定字符串。
当我找到它时,我想检查该字符串后面的内容(例如最终用户)并返回此部分。到目前为止,我设法写了这个:
If InStr(LCase(analysis), "End-user:") > 1 Then Range("AE" & i).Value = "OK"
一旦检测到此字符串,就会将相关单元格标记为OK
。
有人可以帮我吗?
答案 0 :(得分:1)
InStr
将要搜索的字符串的第一个索引(“最终用户:”)返回到目标字符串(Analysis
)。你应该把它和长度一起计算你想要的子串。还要记住,您在一个部分中使用LCase
而在另一个部分中没有使用{什么引起搜索的字符串永远不会被找到,只要它包含大写字母)。提供您想要的代码:
Dim analysis As String : analysis = "End-user: anyone"
Dim stringToSearch as String : stringToSearch = "End-user:"
Dim finalBit As String
Dim startIndex As Integer: startIndex = InStr(LCase(analysis), LCase(stringToSearch))
If (startIndex > 0 And InStr(LCase(analysis), LCase(stringToSearch)) < Len(analysis)) Then
Dim endIndex As Integer: endIndex = startIndex + Len(stringToSearch)
finalBit = Mid(analysis, endIndex, Len(analysis) - endIndex + 1)
End If
'finalBit -> " anyone"
答案 1 :(得分:1)
更直接:
Dim StrMain As String
Dim StrSearch As String
Dim LngPos As Long
StrMain = "sample text End-user:kilroy"
StrSearch = "End-user:"
LngPos = InStr(StrMain, StrSearch)
If LngPos > 0 Then MsgBox Right$(StrMain, Len(StrMain) - LngPos - Len(StrSearch) + 1)