我需要将单元格拆分为多行,而无需移动ID列中的单元格。问题在于该列表可以无穷无尽,类别的数量可以不同,并且它们可以是C列中的信息,这些信息也必须与ID单元格保持在同一行。
当前结果和想要的结果
答案 0 :(得分:0)
您可以使用宏循环浏览您的信息,并将其打印在新列中。像这样:
Sub delimit()
Dim cat As Range, c As Range, i As Long, nxt As Long
Set cat = ActiveSheet.Range(Range("B2"), Range("B65000").End(xlUp))
For Each c In cat
arr = Split(c.Value, ";")
For i = 0 To UBound(arr)
nxt = Cells(Rows.Count, 5).End(xlUp).Offset(1, 0).Row
If i = 0 Then Range("D" & nxt).Value = c.Offset(0, -1)
Range("E" & nxt).Value = arr(i)
Next i
Next c
End Sub
我们在这里使用的核心内容是Split()
,它将字符串转换成数组。
语法:Split ( expression [,delimiter] [,limit] [,compare] )
我们遍历类别列表,将其设置为“ B
”列,并为每个单元格创建一个新数组。
然后,在所需的列中打印此数组,在此示例中,列为“ E
”。
但是首先,由于我们目前正在瞄准该行,因此我们在“ D
”列中打印出ID号。
如果您还希望像我们在进行“ C
”一样复制“ A
”列,只需相应地更改IF
。
来自
If i = 0 Then Range("D" & nxt).Value = c.Offset(0, -1)
到
If i = 0 Then
Range("D" & nxt).Value = c.Offset(0, -1)
Range("F" & nxt).Value = c.Offset(0, 1)
End If