Разделение ячеек на разрыв строки VBA - PullRequest
0 голосов
/ 03 июня 2018

У меня есть набор данных с 40 столбцами и ~ 5000 строк.В столбцах L и M есть многострочные ячейки с разрывами строк, и мне нужно разбить эти строки на отдельные строки, но сохранить информацию в других столбцах одинаковой для этих новых строк.Я перепробовал несколько кодов VBA, но ни один из них не помог мне с двумя столбцами.

1 Ответ

0 голосов
/ 03 июня 2018

Это будет работать для чисел и строк, но не для формул.Это также не подходит для отформатированных ячеек:

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

Пример

Запишите это в столбец A:

A1: 1
A2: 2
A3: 3
A4: This
    is
    a 
    test
A5: 5

Вызвать Subи результат будет:

A1: 1
A2: 2
A3: 3
A4: This
A5: is
A6: a 
A7: test
A8: 5

Субфиксы исправляют один столбец за раз.Вызовите это так:

Call multilineCellsToSeparateCells(Activesheet.Columns("A"))
...