将Chr(10)中的数据拆分为新行

时间:2018-02-25 06:13:12

标签: excel vba excel-vba

我想将选择(B3,B4..etc)分成新行..请帮助我。 例如=如果我选择B3单元格,我想添加更多3行,第2行到第4行应该向下移动。每个单元格中的换行符始终不一样。

Please see attached picture

2 个答案:

答案 0 :(得分:3)

使用函数Split将单元格拆分为字符串数组很简单。

如果单元格A1包含一个包含Chr(10)LF /换行字符)的字符串,那么您可以将其拆分为一个包含VBA的数组:

Dim myArr() as String
myArr = Split(Range("A1"), Chr(10))

...然后你可以将它转储到一系列单元格水平(在UBound的帮助下),如下所示:

Dim startColumn As Integer
startColumn = 2
Range(Cells(1, startColumn), Cells(1, startColumn + UBound(myArr))) = myArr()

...或者您可以将其转储到垂直的一系列单元格中,如下所示:

Dim startRow As Integer, x As Integer
startRow = 2

For x = 0 To UBound(myArr)
    Range("A" & x + startRow) = myArr(x)
Next x

您还没有分享到目前为止您尝试过的代码,但我相信您应该可以使用Range.Insert处理“插入行”部分,或者快速使用Google搜索(如果您没有我已经知道了。

答案 1 :(得分:1)

使用split函数和variant数组。

Sub test()
    Dim vSplit
    Dim vDB, vR()
    Dim i As Long, n As Long, j As Integer
    vDB = Range("a1").CurrentRegion
    For i = 1 To UBound(vDB, 1)
        vSplit = Split(vDB(i, 2), Chr(10))
        For j = 0 To UBound(vSplit)
            n = n + 1
            ReDim Preserve vR(1 To 3, 1 To n)
            If j = 0 Then
                vR(1, n) = vDB(i, 1)
                vR(3, n) = vDB(i, 3)
            End If
            vR(2, n) = vSplit(j)
        Next j
    Next i
    Sheets.Add
    Range("a1").Resize(n, 3) = WorksheetFunction.Transpose(vR)
End Sub