TOP

피벗 불가능(Unpivot)

설명

피벗 테이블(pivot tables)은 데이터 분석의 강력한 도구입니다. 그러나 때로는 모든 유사한 값이 동일한 열에 있도록 일반 테이블 형식으로 배치하기 위해 피벗된 데이터를 피벗 해제(unpivo)해야 합니다(데이터 "직선화" 또는 피벗 해제라고도 함). 예를 들어 새 차트나 수정된 차트나 보고서를 만드는 데 필요합니다.

Power Query 도구를 사용하여 Excel에서 이 변환을 수행할 수 있지만 속도가 빠르고 편리하지도 않습니다. Power Query 없이 요약 데이터를 롤아웃하는 다른 접근 방식을 시도해 보겠습니다.


문제의 공식화

피벗 테이블의 일부 데이터 세트를 플랫 테이블(Unpivot)로 변환해야 한다고 가정해 보겠습니다.

이러한 작업은 매크로를 사용하여 더 잘 해결됩니다. 데이터가 포함된 크로스 테이블(크로스 테이블)을 일반(플랫) 테이블 형식으로 변환할 수 있는 프로시저를 직접 작성해 보겠습니다. 요약 테이블 생성 변경되거나 보완된 데이터로

UnPivotTable 프로시저에 대한 VBA 코드

Visual Basic 편집기(서비스 - 매크로 - 편집기 Visual Basic)를 열고, 새 모듈 삽입 (Insert - Module) 그리고 이 매크로의 텍스트를 거기에 복사하세요:

Sub UnPivotTable()
  'moonexcel.com.ua  
  Dim InVal    As Variant
  Dim OutVal() As Variant
  Dim j, k, i  As Long
  Dim NewSheet
  
  i = 1
  InVal = Selection.Formula
  ReDim OutVal(1 To Selection.Count, 1 To 3)
  
  For j = 2 To UBound(InVal, 1)
    For k = 2 To UBound(InVal, 2)
      If InVal(j, k) <> "" Then
        OutVal(i, 1) = InVal(j, 1)
        OutVal(i, 2) = InVal(1, k)
        OutVal(i, 3) = InVal(j, k)
        i = i + 1
      End If
    Next k
  Next j
  
  Set NewSheet = Worksheets.Add
  NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

그런 다음 VBA 편집기를 닫고 Excel로 돌아가서 소스 테이블(헤더와 국가가 포함된 첫 번째 열 포함)을 선택하고 메뉴를 통해 매크로를 실행할 수 있습니다. 서비스 - 매크로 - 매크로 (Tools - Macro - Macros) (Alt+F8) .

매크로는 통합 문서에 새 시트를 삽입하고 그 위에 선택한 테이블의 재구성된 새 버전을 만듭니다. 대형 테이블을 처리하고 분석하기 위해 Excel 도구의 전체 무기고를 사용하여 "전체 프로그램으로" 이러한 테이블을 작업할 수 있습니다.

관련 기사: