У меня есть 1542 строки в одном столбце.

Я хотел бы разбить это на несколько столбцов с одинаковым # или близко к одинаковому количеству строк в каждом столбце. Также, если возможно, можно сделать это разными способами ...

то есть разбить его на 4,5,6 или более столбцов, мои данные - это IP-адреса, поэтому в каждой ячейке будет текст ниже - образец моих данных

10.11.6.1
10.11.8.1
10.11.11.1
10.11.22.1
10.11.26.1
10.11.32.1
10.11.35.1
10.11.38.1
10.18.8.1
10.18.14.1
10.18.19.1
10.18.24.1
10.18.25.1
10.18.27.1
10.18.73.1
10.18.86.1
10.18.88.1
10.19.8.1
10.19.19.1
10.19.29.1
10.19.31.1
10.19.43.1
10.19.54.1
10.19.57.1
10.19.65.1

2 ответа2

0

Простой скрипт vba для получения значения в выбранной ячейке и разбиения его на отдельные ячейки:

Sub Macro1()
    Dim rCell As Range, cString As String, cr As String
    Set rCell = Selection(1)
    a = rCell.Value
    cr = Chr(13)
    If InStr(a, cr) > 0 Then
        ary = Split(a, cr)
        For i = 1 To UBound(ary)
            rCell.Offset(1, 0).EntireRow.Insert
        Next i
        For i = 0 To UBound(ary)
            rCell.Offset(i, 0).Value = ary(i)
        Next i
    End If

End Sub

Этот макрос находит char(13), возврат каретки, и добавляет новую ячейку, основываясь на ее поиске. Если это не работает, возможно, у вас есть char(10), переводы строки, поэтому просто измените число в макросе.

Этот макрос частично плагиат из других сообщений на этом и других форумах.

0

Попробуйте это:

Sub marine()
    Dim i As Long, j As Long, k As Long
    Dim v As String, Old As String
    Dim N As Long

    N = Cells(Rows.Count, "A").End(xlUp).Row
    j = 2
    i = 1
    Cells(1, 2) = Cells(1, 1)
    Old = Split(Cells(i, 1), ".")(1)

    For k = 2 To N
        v = Cells(k, 1).Value
        If Split(v, ".")(1) <> Old Then
            j = j + 1
            i = 1
            Old = Split(v, ".")(1)
        Else
            i = i + 1
        End If
        Cells(i, j) = v
    Next k
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .