将单元格中的文本拆分为单独的行

将单元格中的文本拆分为单独的行

不久前我偶然发现了这段代码,它运行得很好,但我想对它做一些修改来反映我想要的。我已经修改了这段代码一段时间,但到目前为止,我还是无法自己解决它,需要帮助。

原问题链接:https://stackoverflow.com/questions/19815321/text-to-rows-vba-excel

Option Explicit

Sub Main()

    Columns("B:B").NumberFormat = "@"
    Dim i As Long, c As Long, r As Range, v As Variant

    For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
        v = Split(Range("B" & i), "/")
        c = c + UBound(v) + 1
    Next i

    For i = 2 To c
        Set r = Range("B" & i)
        Dim arr As Variant
        arr = Split(r, "/")
        Dim j As Long
        r = arr(0)
        For j = 1 To UBound(arr)
            Rows(r.Row + j & ":" & r.Row + j).Insert Shift:=xlDown
            r.Offset(j, 0) = arr(j)
            r.Offset(j, -1) = r.Offset(0, -1)
            r.Offset(j, 1) = r.Offset(0, 1)
        Next j
    Next i

End Sub

如果我有更多需要排序的列,我该如何更改此代码,以便按照此代码当前对数据进行排序的方式进行排序。因为目前它只处理“B”列左右 3 列。

我不知道我是否说得含糊其辞,但我真的不知道如何解释我的问题。任何帮助都将不胜感激。

答案1

你修改了这段代码 -

r.Offset(j, 0) = arr(j)
r.Offset(j, -1) = r.Offset(0, -1)
r.Offset(j, 1) = r.Offset(0, 1)

包括附加列 -

r.Offset(j, 0) = arr(j)
r.Offset(j, -1) = r.Offset(0, -1)
r.Offset(j, 1) = r.Offset(0, 1)
r.Offset(j, 2) = r.Offset(0, 2)
r.Offset(j, 3) = r.Offset(0, 3)
r.Offset(j, 4) = r.Offset(0, 4)

或者换句话说,你抵消了n在哪里n通过将其放入函数中,可以是正数或负数(右/左或下/上)offset()

相关内容