Excel 如何获取字符串的特定部分

Excel 如何获取字符串的特定部分,excel,vba,Excel,Vba,我正在Excel中编写宏,需要从字符串中获取子字符串。 是这样的 ~/tester/test/hai/bye ~/stack/overflow/hai/bye 在上面的例子中,我需要从第一个字符串测试器获取字符串测试器,并从第二个字符串测试器获取堆栈。我试着使用InStr,但没有用。有人能帮忙吗?您可以使用InStr和Mid功能来完成此操作。 使用InStr函数查找/的引用,然后使用Mid获取您感兴趣的字符串部分 试试这个: Function ExtractFirstPartOfPath(pa

我正在Excel中编写宏,需要从字符串中获取子字符串。 是这样的

~/tester/test/hai/bye
~/stack/overflow/hai/bye

在上面的例子中,我需要从第一个字符串测试器获取字符串测试器,并从第二个字符串测试器获取堆栈。我试着使用
InStr
,但没有用。有人能帮忙吗?

您可以使用InStr和Mid功能来完成此操作。 使用InStr函数查找/的引用,然后使用Mid获取您感兴趣的字符串部分

试试这个:

Function ExtractFirstPartOfPath(path as String) as String

  Dim first, second as Integer

  first = InStr(path, "/")
  second = InStr(first + 1, path, "/")

  ExtractFirstPartOfPath = Mid(path, first + 1, second - first - 1)

End Function
Sub Macro1()
    Dim text As String, result As String
    text = "~/tester/test/hai/bye"
    result = Mid(text, 3, InStr(3, text, "/") - 3)
    'MsgBox is for demo only
    MsgBox result
End Sub
此函数将产生所需的结果。

尝试以下操作:

Function ExtractFirstPartOfPath(path as String) as String

  Dim first, second as Integer

  first = InStr(path, "/")
  second = InStr(first + 1, path, "/")

  ExtractFirstPartOfPath = Mid(path, first + 1, second - first - 1)

End Function
Sub Macro1()
    Dim text As String, result As String
    text = "~/tester/test/hai/bye"
    result = Mid(text, 3, InStr(3, text, "/") - 3)
    'MsgBox is for demo only
    MsgBox result
End Sub

据我所知,Excel中没有正则表达式,你必须“手工”完成你想做的事情

你可以像其他人所展示的那样使用Instr

下面是另一个使用拆分的解决方案(此功能适用于Excel 2000及更高版本)