用断线VBA分割单元格
我有一个40列~5000行的数据集。在L列和M列中有带换行符的多行单元格,我需要将这些行拆分为单独的行,但对于这些新行,其他列中的信息保持不变。我已经尝试了多个VBA代码,但似乎没有一个能对两列执行此操作。这适用于数字和字符串,但不适用于公式。它也不适用于格式化的单元格:用断线VBA分割单元格,vba,excel,split,Vba,Excel,Split,我有一个40列~5000行的数据集。在L列和M列中有带换行符的多行单元格,我需要将这些行拆分为单独的行,但对于这些新行,其他列中的信息保持不变。我已经尝试了多个VBA代码,但似乎没有一个能对两列执行此操作。这适用于数字和字符串,但不适用于公式。它也不适用于格式化的单元格: Sub multilineCellsToSeparateCells(rng As Range) Dim i As Long, j As Long, ubnd As Long Dim cll A
Sub multilineCellsToSeparateCells(rng As Range)
Dim i As Long, j As Long, ubnd As Long
Dim cll As Range
Dim arrVals As Variant, tempVal As Variant, vItem As Variant
With rng
ReDim arrVals(.Rows(1).Row To rng.Rows.Count, 1 To 1) As Variant
For Each cll In rng.Cells
tempVal = cll.Value2
If InStr(1, tempVal, Chr(10)) > 0 Then
vItem = Split(tempVal, Chr(10))
i = i + 1
ubnd = UBound(vItem)
For j = 0 To ubnd
arrVals(i + j, 1) = vItem(j)
Next j
i = i + ubnd
ElseIf tempVal <> vbNullString Then
i = i + 1
arrVals(i, 1) = tempVal
End If
Next cll
.Value2 = arrVals
.AutoFit ' optional
End With
End Sub
调用子项
,输出将为:
A1: 1
A2: 2
A3: 3
A4: This
A5: is
A6: a
A7: test
A8: 5
子节点一次固定一列。像这样调用它:
Call multilineCellsToSeparateCells(Activesheet.Columns("A"))
你有没有把这个工作分解成一列?如果是这样,请分享代码,以便L和M不一定保持对齐。这意味着您将一次处理一列,并通过插入行在单独的单元格中拆分多行单元格?Hi@Miqi180您知道如何使其跳过在列L中空白的单元格中运行宏吗?如果在For循环中添加条件语句,您可以检查vItem(j)是否=vbNullstring,并且仅在数组不可用时添加到数组中。
Call multilineCellsToSeparateCells(Activesheet.Columns("A"))