Regex 如何使用Excel VBA获取包含在两个字符之间的字符串的特定部分?

Regex 如何使用Excel VBA获取包含在两个字符之间的字符串的特定部分?,regex,excel,vba,Regex,Excel,Vba,我需要在excel中编写一个宏,它可以帮助我获取字符串的特定部分。我的字符串如下: 贝宝*VINAYAKAGGRAWAL 4029357733 我需要从上面的字符串中提取VINAYAKAGGRAWAL。任何有关vba宏或excel公式的帮助都会有所帮助 提前谢谢 类似于: Sub parser() Dim s As String, s2 As String, s3 As String s = "PAYPAL *VINAYAKAGGRAWAL 4029357733" s2

我需要在excel中编写一个宏,它可以帮助我获取字符串的特定部分。我的字符串如下:

贝宝*VINAYAKAGGRAWAL 4029357733

我需要从上面的字符串中提取VINAYAKAGGRAWAL。任何有关vba宏或excel公式的帮助都会有所帮助

提前谢谢

类似于:

Sub parser()
    Dim s As String, s2 As String, s3 As String
    s = "PAYPAL *VINAYAKAGGRAWAL 4029357733"
    s2 = Mid(s, InStr(1, s, "*") + 1)
    s3 = Left(s2, InStr(1, s2, " "))
    MsgBox s3
End Sub

如果您的两个字符为*且与上面的字符串相同,则可以在VBA中使用:

Function GetString(s As String) As String
    GetString = Split(Split(s, "*")(1), " ")(0)
End Function
或在工作表上使用单元格内公式:

=TRIM(LEFT(RIGHT(D8,LEN(D8)-FIND("*",D8)),FIND(" ",RIGHT(D8,LEN(D8)-FIND("*",D8)))))
其中,D8将在

中具有原始字符串,可能是:

strClean = Replace("PAYPAL *VINAYAKAGGRAWAL 4029357733", "PAYPAL *", "")
strWanted = Left(strClean, InStr(strClean, " ") - 1)
Debug.Print strWanted
工作原理: 首先,我们用Replace函数去掉*字符-将其改为空字符串。 然后我们使用split函数按空格分割字符串。我们没有明确提到空格分隔符,因为它是拆分的默认分隔符。 最后,我们从带有1的字符串中获得第二项。Split返回从零开始的数组,所以第一项是0,第二项是1,等等。因为我们需要第二项,所以我们使用1。
实现这一点的方法有很多。你自己试过的是什么?您标记了regex,但您提供的示例似乎不需要它。虽然此代码可能会解决OP的问题,但最好包含一个解释,说明您的代码如何解决OP的问题。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到自己的代码中。因此,它不是一种编码服务,而是一种知识资源。此外,高质量、完整的答案更有可能被提升。这些特性,以及所有帖子都是独立的要求,是SO作为一个平台的一些优势,使其区别于论坛。您可以编辑以添加其他信息和/或用源文档补充您的解释。@SherylHohman我已添加了解释。
strClean = Split(Replace("PAYPAL *VINAYAKAGGRAWAL 4029357733", "*", ""))(1)