|
去括号
- sub tt()
- arr = Range("a1:a" & [a65536].End(3).Row)
- ReDim brr(1 To UBound(arr), 1 To 1)
- Set d = CreateObject("scripting.dictionary")
- Dim zuo(1 To 2): Dim you(1 To 2)
- On Error Resume Next
- For i = 1 To UBound(arr)
- x = arr(i, 1)
- y = Replace(Replace(x, "(", ""), ")", "") '第一种情况:去掉所有括号
- If Application.Evaluate(y) = 24 Then GoTo 100
-
- zz = 0: yy = 0 '记录左右括号位置
- For k = 1 To Len(x)
- p = Mid(x, k, 1)
- If p = "(" Then zz = zz + 1: zuo(zz) = k
- If p = ")" Then yy = yy + 1: you(yy) = k
- Next
- For zz = 1 To 2 '第二种情况:分别去掉各种左右括号组合
- For yy = 1 To 2
- xx = x
- Mid(xx, zuo(zz), 1) = "a"
- Mid(xx, you(yy), 1) = "a"
- y = Replace(xx, "a", "")
- js = Application.Evaluate(y)
- If InStr(CStr(js), "Error") = 0 Then If js = 24 Then GoTo 100
- Next
- Next
-
- y = x '第三种情况:没去掉任何括号
-
- 100: brr(i, 1) = y: d(y) = ""
- Next
- ''显示结果:B列是A列去括号后的结果,C列就B列去重后的结果
- [c1].Resize(d.Count) = Application.Transpose(d.keys)
- [b1].Resize(i - 1) = brr
- MsgBox "去括号前" & i - 1 & "组,去括号后" & d.Count & "组"
-
- End Sub
复制代码 |
评分
-
查看全部评分
|