excel vba-提取2个字符之间的文本
如果我有这个专栏:
ColA ----- NUMBER(8,3) NUMBER(20)
我需要一个VBA函数(注意,这些开始和结束string只会在单元格中出现一次):
extract_val(细胞,start_str,end_str)
即。 extract_val(A1,“(”,“)”)并给出结果:
8,3 20
我只需要在其他vba代码中使用这个函数,而不是把它作为表单中的公式。
更新(感谢回答,我解决了:)
--------------------------- 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
你可以使用instr
在string中定位一个字符(例如返回'('
)的位置,然后你可以用'('
和')'
的位置使用mid
来提取一个substing。
像(从记忆中):
dim str as string dim openPos as integer dim closePos as integer dim midBit as string str = "NUMBER(8,3)" openPos = instr (str, "(") closePos = instr (str, ")") midBit = mid (str, openPos+1, closePos - openPos - 1)
如果这些字符不在string中,您可能需要添加错误检查。
如果string是“A的值是[1.0234],B的值是[3.2345]”
如果你想提取B的值即3.2345,那么
firstDelPos = InStrRev(textline, “[“) ' position of start delimiter secondDelPos = InStrRev(textline, “]”) ' position of end delimiter stringBwDels = Mid(textline, firstDelPos + 1, secondDelPos – firstDelPos – 1) ' extract the string between two delimiters MsgBox (stringBwDels) ' message shows string between two delimiters