Excel 基于括号和括号前后的空格分割单元格的Vba代码
我有一个excel文件,其中有一些单元格,括号内和括号外有几个文本。我想把细胞分开。例如,我有一些细胞像这样出现Excel 基于括号和括号前后的空格分割单元格的Vba代码,excel,vba,Excel,Vba,我有一个excel文件,其中有一些单元格,括号内和括号外有几个文本。我想把细胞分开。例如,我有一些细胞像这样出现 (一些文本在括号内)和(其他文本在括号外) 我希望拆分单元格,以便中的某些文本位于不同的单元格中,括号和也位于不同的单元格中,外部的其他文本也位于不同的单元格中。到目前为止,我所说的只是把括号里的部分分开。提前谢谢。下面是我的代码 Sub StripCells() Dim r As Range, i As Long With CreateObject("VBScript.RegEx
(一些文本在括号内)和(其他文本在括号外)
我希望拆分单元格,以便中的某些文本位于不同的单元格中,括号和
也位于不同的单元格中,外部的其他文本也位于不同的单元格中。到目前为止,我所说的只是把括号里的部分分开。提前谢谢。下面是我的代码
Sub StripCells()
Dim r As Range, i As Long
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\(([^\)]+)\)"
For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
If .test(r.Value) Then
For i = 0 To .Execute(r.Value).Count - 1
r(, i + 2).Value = "'" & .Execute(r.Value)(i).submatches(0)
Next
End If
Next
End With
End Sub
我找到了一个有效的模式。(我作弊,并使用Replace()
,但它似乎做到了这一点):
如果所有单元格都以“(”开头,则:
Sub-fracture()
变暗r为范围,a、arr、i为长度
对于范围内的每个r(“a1”、范围(“a”和行数)。结束(xlUp))
arr=拆分(替换(r.值,(“,”),”)
i=0
对于arr中的每个a
如果我是0那么
r、 偏移量(0,i)。值=a
如果结束
i=i+1
下一个
下一个r
端接头
您能给出一些示例输入和预期输出吗?
Sub StripCells()
Dim r As Range, i As Long
With CreateObject("VBScript.RegExp")
.Global = True
'.Pattern = "\(([^\)]+)\)"
.Pattern = "((\(([^\)]+)\))|[\w+ ]+)"
For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
If .test(r.Value) Then
For i = 0 To .Execute(r.Value).Count - 1
r(, i + 2).Value = "'" & Replace(Replace(.Execute(r.Value)(i).submatches(0), ")", ""), "(", "")
Next
End If
Next
End With
End Sub
Sub fracture()
Dim r As Range, a, arr, i As Long
For Each r In Range("a1", Range("a" & Rows.Count).End(xlUp))
arr = Split(Replace(r.Value, "(", ")"), ")")
i = 0
For Each a In arr
If i <> 0 Then
r.Offset(0, i).Value = a
End If
i = i + 1
Next a
Next r
End Sub