从VBA中的字符串中提取子字符串

时间:2012-06-21 14:58:02

标签: vba excel-vba excel-2007 substring excel

我希望编写一些VBA代码,以便从以下带括号和连字符的字符串中获取以下信息,即

  

ACOST 2012定价表 - (PRJ 216664 - 金融服务器退役) - 12个月期限

使用VBA for Excel 2007,我需要在此字符串中获得以下两位并分配给两个不同的变量,即:

  • 216664
  • 金融服务器退役

我尝试了Mid()语法但无法提取这两个信息。

2 个答案:

答案 0 :(得分:4)

如果格式保持不变,则可以使用此

Sub Sample()
    Dim strSample As String

    strSample = "ACOST 2012 Pricing Table - (PRJ 216664 - Financial Server Decommission) - 12 Month Term"
    strSample = Split(Split(strSample, "(")(1), ")")(0)

    Debug.Print Trim(Split(Split(strSample, "-")(0), " ")(1))
    Debug.Print Trim(Split(strSample, "-")(1))
End Sub

答案 1 :(得分:0)

另一种方式;

Data = "ACOST 2012 Pricing Table - (PRJ 216664 - Financial Server Decommission) - 12 Month Term"

dim re As object, matches as object: Set re = createobject("vbscript.regexp")
re.pattern="- \(.*?(\d+)\s+-\s+(.*?)\)(\s|$)"

with re.Execute(Data)
    msgBox  .item(0).SubMatches(0) & " / " & .item(0).SubMatches(1)
End with
  

获取“ - ”之后的最后一组数字   然后是空白然后把所有东西都拿到下一个   空格或行尾“