때로는 크로스(피벗) 테이블을 플랫 테이블로 변환해야 할 경우도 있습니다. 이 절차를 " 데이터 정리 "
LibreOffice Calc 프로그램에는 피벗 테이블을 " 효력 "이지만 해당 절차를 직접 작성할 수도 있습니다. 수행 방법을 살펴보겠습니다.
문제의 본질을 더 명확하게 이해하기 위해 아래 그림을 살펴 보겠습니다. 왼쪽에는 행렬 형태의 테이블(피벗 테이블)이 있고 오른쪽에는 열이 있는 일반 테이블(플랫 테이블)이 있습니다.
테이블을 확장할 때 행렬 테이블의 열 교차점인 속성-값 쌍의 압축을 풀고 플랫 테이블의 평면화된 열로 방향을 다시 지정합니다.
Tools - Macros - Edit Macros... 메뉴를 열고 Module1을 선택한 후 다음 텍스트를 모듈에 복사합니다.
Sub UnPivotTable ' moonexcel.com.ua Dim oBook As Object Dim oActiveSheet As Object Dim oSelRange As Object Dim oNewSheet As Object Dim i As Long Dim iTopLabelRowCount As Integer Dim iSideLabelColCount As Integer oBook = ThisComponent oActiveSheet = oBook.CurrentController.ActiveSheet oSelRange = oBook.CurrentSelection ' 새 시트 추가 oBook.Sheets.insertNewByName("UnPivoted Table",0) oNewSheet = oBook.Sheets(0) ' 헤더 크기 결정 iTopLabelRowCount = InputBox(" 상단 헤더에 몇 줄이 있나요? ") iSideLabelColCount = InputBox(" 측면 헤더에 몇 개의 열이 있나요? ") i = 0 For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count For j = 1 To iSideLabelColCount oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula Next j For k = 1 To iTopLabelRowCount oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula Next k oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula i = i + 1 Next c Next r End Sub
그런 다음 Macro Editor을 닫고 LibreOffice Calc의 워크시트로 돌아갑니다. 상단 및 왼쪽 헤더가 있는 전체 테이블을 선택하고 Tools - Macros - Run Macro... 메뉴를 통해 새 매크로를 실행합니다.
매크로는 통합 문서에 새 이름의 시트를 삽입합니다.
유틸리티를 사용할 수도 있습니다. "피벗 테이블(Unpivot)" 확장 프로그램을 설치하여 YLC_Utilities.oxt .
그 후에는 LibreOffice Calc에서 열리는 모든 파일에서 이 유틸리티를 사용할 수 있습니다.