之间。如果我有此列:擅长vba-提取文本2个字符
ColA
-----
NUMBER(8,3)
NUMBER(20)
我需要一个VBA函数,它会去(注意,这些启动并在小区边缘串永远只能出现一次):
extract_val(cell,start_str,end_str)
即, extract_val(A1,“(”,“)”)和得到的结果:
8,3
20
我只需要通过将其作为在片材上的公式不使用内的其它VBA代码此功能。
UPDATE(感谢答案,我看中了:)
---------------------------
Public Function extract_value(str As String) As String
Dim openPos As Integer
Dim closePos As Integer
Dim midBit As String
On Error Resume Next
openPos = InStr(str, "(")
On Error Resume Next
closePos = InStr(str, ")")
On Error Resume Next
midBit = mid(str, openPos + 1, closePos - openPos - 1)
If openPos <> 0 And Len(midBit) > 0 Then
extract_value = midBit
Else
extract_value = "F"
End If
End Function
Public Sub test_value()
MsgBox extract_value("NUMBER(9)")
End Sub
您可能想要让closePos行从它找到openPos的位置开始,否则您可以在开括号前找到一个闭括号,但考虑到您的示例,这不太可能。 – harag
略微超范围提示:http://stackoverflow.com/questions/2757477/trap-error-or-resume-next –