Excel:儲存格內的逗號分隔值 - 分解為每個組合組成的更多行

Excel:儲存格內的逗號分隔值 - 分解為每個組合組成的更多行

我想從第一個表轉到第二個表:

在此輸入影像描述

....為了在資料透視表中使用。我希望第一個表位於一張紙上,第二個表位於另一張紙上,實時更新這個“爆炸”的第二個表。我已經嘗試了一段時間但無法讓它發揮作用。有什麼建議麼?我使用的表單在單一儲存格中輸出這種逗號分隔值的清單類型,在這種情況下,手動執行是不切實際的,因為會有數千行。

答案1

我修改了腳本從 gtwebb 提供的鏈接。這是腳本:

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

Columns("C:C").NumberFormat = "@"
Dim k As Long, d As Long, s As Range, w As Variant

For k = 1 To Range("C" & Rows.Count).End(xlUp).Row
    w = Split(Range("C" & k), ", ")
    d = d + UBound(w) + 1
Next k

For k = 2 To d
    Set s = Range("C" & k)
    Dim arrb As Variant
    arrb = Split(s, ", ")
    Dim m As Long
    s = arrb(0)
    For m = 1 To UBound(arrb)
        Rows(s.Row + m & ":" & s.Row + m).Insert Shift:=xlDown
        s.Offset(m, 0) = arrb(m)
        s.Offset(m, -1) = s.Offset(0, -1)
        s.Offset(m, -2) = s.Offset(0, -2)
    Next m
Next k
End Sub

因為我只需要兩列,所以我不需要循環。唯一修改的是腳本重複一次,變數被更改,參數Offset被更改。

相關內容