我怎样才能把一个单元格内的东西分成几个单元格?
我有这个单元格有一个列表,例如:
[dogs, cats, mice, cows, horses]
我想分开他们在不同的单元格:
[dogs] [cats] [mice] [cows] [horses]
可以这样做吗?
你可以在VBA
轻松做到这一点:
Sub splitString () Dim ran, splitS() As String ran = Range("A1") splitS() = Split(ran, ",") For j = LBound(splitS) To UBound(splitS) Range("B" & (j + 1)) = splitS(j) Next j End Sub
如果你还想要方括号 ,使用下面的代码:
Sub splitStringWithSquareBrackets() Dim ran, splitS() As String ran = Range("A1") ran = Right(ran, Len(ran) - 1) ran = Left(ran, Len(ran) - 1) splitS() = Split(ran, ",") For j = LBound(splitS) To UBound(splitS) Range("B" & (j + 1)) = "[" & splitS(j) & "]" Next j End Sub
使用单元格A1中的数据:
Sub dural() Dim s As String, i As Long s = Range("A1").Value s = Mid(s, 2, Len(s) - 2) ary = Split(s, ", ") i = 2 For Each a In ary Cells(i, "A").Value = "[" & a & "]" i = i + 1 Next a End Sub
这将做到这一点 – 你必须在运行之前select单元格与它假设有两端封闭括号(“[”和“]”)。
我现在得到最好的答案
Sub ImAmazing() Dim sString As String, i As Long If Trim(ActiveCell.Value) = "" Then Exit Sub ActiveCell.Value = Mid(ActiveCell.Value, 2, Len(ActiveCell.Value) - 2) Do Until InStr(ActiveCell.Value, ",") = 0 i = i + 1 Cells(ActiveCell.Row + i, ActiveCell.Column).Value = "[" & Left(ActiveCell.Value, InStr(ActiveCell.Value, ",") - 1) & "]" ActiveCell.Value = Right(ActiveCell.Value, (Len(ActiveCell.Value) - InStr(ActiveCell.Value, ",") - 1)) Loop ActiveCell.Value = "[" & ActiveCell.Value & "]" End Sub