将单列中的大量行拆分为多列

将单列中的大量行拆分为多列

我有一列 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

答案1

一个简单的 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),换行符,因此只需更改宏中的数字即可。

这个宏部分抄袭自本论坛和其他论坛上的其他帖子

答案2

尝试一下:

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

在此处输入图片描述

相关内容