가로 테이블 레이아웃을 세로 테이블로 변환

가로 테이블 레이아웃을 세로 테이블로 변환

다음 Excel 시트를 다시 정렬해야 합니다.

~에서

ID  Name1  Name2  Name3

1   Alf    Bert   Fritz

2   Curt

3   Otto   Mike

4   Sue    Zack 

에게

ID  Name

1   Alf

1   Bert

1   Fritz

2   Curt

3   Otto

3   Mike

4   Sue

4   Zack

올바른 검색어가 누락되었습니다. 꽤 흔한 일인 것 같지만 제대로 설명할 수 없습니다.

답변1

이 코드를 사용해 보세요. 단계별 작업을 통해 설명이 필요합니다. 입력 데이터는 A1에서 시작하고 출력은 A8에서 시작됩니다. 이는 변경될 수 있습니다.

물론 더 짧은 코드도 가능하고, 배열 수식도 함께 넣을 수도 있을 것 같아요.

Sub single_col()
    Dim icell As Integer
    Dim irow As Integer, icol As Integer
    Dim nrows As Integer, ncols As Integer
    Dim rng_all As Range, rng_curr As Range, rng_trg As Range
    Set rng_all = Range("A2:D5")
    Set rng_trg = Range("A8")
    nrows = rng_all.Rows.Count
    icell = 0
    For irow = 1 To nrows
      Set rng_curr = rng_all.Rows(irow)
      ncols = WorksheetFunction.CountA(rng_curr)
      For icol = 2 To ncols
        icell = icell + 1
        Dim name As String
        name = rng_curr.Cells(1, icol).Text
        rng_trg.Value = rng_curr.Cells(1, 1).Text
        rng_trg.Offset(0, 1).Value = name
        Set rng_trg = rng_trg.Offset(1, 0)
      Next icol
    Next irow
End Sub

추신: 위의 코드에는 주석에 제안된 수정 사항이 이미 포함되어 있습니다.

답변2

"피벗 해제"하려는 피벗 테이블 레이아웃이 있습니다. 이것기사Jon Walkenbach는 VBA 코드 없이 몇 번의 키 입력만으로 무엇을 할 수 있는지 보여줍니다.

귀하의 특정 상황에 대해 제가 할 일은 다음과 같습니다.

1. Alt + D, P를 사용하여 "이전" 피벗 테이블 메뉴를 엽니다. 아래와 같은 대화 상자가 나타납니다. "다중 통합 범위" 옵션을 선택하고 "다음"을 클릭하세요.

여기에 이미지 설명을 입력하세요

2. 다음 단계에서 "페이지 필드를 생성하겠습니다"를 선택합니다. "다음"을 클릭하세요.

여기에 이미지 설명을 입력하세요

3. 대화 상자 상단에 정의되도록 셀 범위를 강조 표시한 다음 "추가" 버튼을 클릭하여 해당 범위를 "모든 범위" 목록에 복사합니다. "다음"을 클릭하세요.

여기에 이미지 설명을 입력하세요

4. 데이터에서 멀리 떨어진 셀을 선택하십시오. 여기서는 동일한 시트에서 F3을 선택했습니다. (원하는 경우 다른 시트를 선택할 수 있습니다.) "마침"을 클릭하세요.

여기에 이미지 설명을 입력하세요

5. 이와 같은 피벗 테이블을 얻게 됩니다. 대화 상자에서 "행" 및 "열" 확인란을 선택 취소합니다.

여기에 이미지 설명을 입력하세요

6. 단일 셀 피벗 테이블이 제공됩니다.

여기에 이미지 설명을 입력하세요

7. 그런 다음 한 셀을 두 번 클릭하면 새 시트에서 "피벗되지 않은" 데이터가 새 테이블로 표시됩니다.

여기에 이미지 설명을 입력하세요

이 테이블 데이터를 사용하면 이제 C열을 필터링하여 공백이 아닌 항목을 표시할 수 있고 B열을 삭제하면 원하는 레이아웃을 얻을 수 있습니다.

관련 정보