我有一个包含一些内容的列,它看起来像下面的字符串:V2397(+60)
如何获取括号之间的值?在本例中为+60。
括号前的数字(和字符)不是标准化的,括号之间的数字也不是标准化的(它可以是100,10 -10,甚至0...)。
发布于 2011-11-09 06:38:52
VBA代码:
cellValue = "V2397(+60)"
openingParen = instr(cellValue, "(")
closingParen = instr(cellValue, ")")
enclosedValue = mid(cellValue, openingParen+1, closingParen-openingParen-1)显然,应该从单元中读取cellValue。
或者,如果单元格A1具有这些值之一,则可以使用以下公式将封闭的值扩展到不同的单元格:
=Mid(A1, Find("(", A1)+1, Find(")",A1)-Find("(",A1)-1)发布于 2011-11-09 14:16:53
我将为此使用正则表达式,因为它很容易处理
Test子程序运行三个样例字符串测试
下面的代码使用了一个自定义函数,你也可以在Excel中直接调用它,即= GetParen(A10)
Function GetParen(strIn As String) As String
Dim objRegex As Object
Dim objRegMC As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "\((.+?)\)"
If .Test(strIn) Then
Set objRegMC = .Execute(strIn)
GetParen = objRegMC(0).submatches(0)
Else
GetParen = "No match"
End If
End With
Set objRegex = Nothing
End Function
Sub Test()
MsgBox GetParen("V2397(+60)")
MsgBox GetParen("Not me")
MsgBox GetParen(ActiveSheet.Range("A1"))
End Sub发布于 2011-11-09 06:40:12
使用InStr获取左方括号字符和右方括号字符的索引;然后使用Mid检索所需的子字符串。
如果参数不是变体,则使用InStr$和Mid$的性能会更好。
https://stackoverflow.com/questions/8058032
复制相似问题