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

需要从VBA中由特殊字符包围的字符串中提取子字符串,vba,excel,Vba,Excel,我是VBA的新手,我有一根弦 我想提取VBA中以特殊字符“u”下划线开头和结尾的子字符串。 我需要的代码片段,可以做上述任务,你能帮我吗 在这种情况下,代码应该提取子字符串头 这个想法来自: 我去 要得到结果:HEAD如何: Public Function UnderScore(s As String) As String UnderScore = Split(s, "_")(1) End Function 如果要使用Excel,而不使用VBA,则应考虑以下方法来制作公式: 第一个符号

我是VBA的新手,我有一根弦 我想提取VBA中以特殊字符“u”下划线开头和结尾的子字符串。 我需要的代码片段,可以做上述任务,你能帮我吗 在这种情况下,代码应该提取子字符串头

这个想法来自: 我去

要得到结果:HEAD

如何:

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

如果要使用Excel,而不使用VBA,则应考虑以下方法来制作公式:

第一个符号在哪个位置? 知道第一个符号的第一个位置,我能找到第二个符号吗? 现在,知道了第一个和第二个位置,有没有办法只提取两个位置之间的字符串? 我怎样才能把全党团结在一起,而不发疯呢? 公式搜索和MID结合在一起非常强大。搜索公式具有可选值,表示从何处开始搜索请参见第二个公式。因此,我们在第一个找到的值上加上+1。在第二个公式中,添加了-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))

调查斯普利特。在u上拆分,并获取位置1的结果:Debug.Print SplitI_HEAD,谢谢你的storex!!它工作得非常好。是的,因为您自己没有表现出任何努力,您只是编写了“我需要代码片段”,但这不是一个代码编写服务,可能我必须描述我已经尝试和测试过的内容,以便做得更好。@Storex感谢您的快速帮助谢谢Gary的学生!!!你拯救了我的一天:-@codennija你是非常受欢迎的。或者TRIMMIDSUBSTITUTEA1,u,REPT,10000100001000000,这稍微更容易转化为删除字符串中第n项的一般形式,第二个10000变为n-1*10000@Chronocidal-令人印象深刻-它可以工作,而且更小: