需要从VBA中由特殊字符包围的字符串中提取子字符串

时间:2018-03-21 14:50:11

标签: excel vba excel-vba

我是VBA新手,我有一个字符串 I_HEAD_FOR 我想提取在VBA中以特殊字符'_'(Underscore)开始和结束的子字符串。 我需要能完成上述任务的代码片段,能否请你帮忙 在这种情况下,代码应该提取子字符串 HEAD

这个想法来自: I_HEAD_FOR

得到结果: HEAD

2 个答案:

答案 0 :(得分:2)

怎么样:

Public Function UnderScore(s As String) As String
    UnderScore = Split(s, "_")(1)
End Function

答案 1 :(得分:2)

如果您想使用Excel而不使用VBA,这就是您应该考虑制作公式的方式:

  • 哪个位置是第一个_标志?
  • 知道第一个标志的第一个位置,我能找到第二个_标志吗?
  • 现在,知道第一个和第二个位置,有没有办法只提取两个位置之间的字符串?
  • 如何将整个派对统一为一个公式,而不会发疯?

enter image description here

公式SEARCHMID非常强大。 SEARCH公式具有可选值,说明您应该从哪里开始搜索(请参阅第二个公式)。因此,我们将+1添加到第一个找到的值。在第二个公式中,添加了-1,因为我们不想要_的位置,而是前一个位置。

文字中的公式:

=SEARCH("_",A1,1)
=SEARCH("_",A1,SEARCH("_",A1,1)+1)-1
=MID(A1,B1+1,B2-B1)
=MID(A1,SEARCH("_",A1,1)+1,SEARCH("_",A1,SEARCH("_",A1,1)+1)-1-SEARCH("_",A1,1))