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변수가 변경된다는 것입니다.

관련 정보