Czasem zachodzi potrzeba zamiany tabeli krzyżowej (przestawnej) na płaską. Procedura ta nazywa się „ prostowanie danych "
Program LibreOffice Calc nie posiada standardowej funkcjonalności konwersji tabel przestawnych na „ płaski ", ale możesz sam napisać odpowiednią procedurę. Zobaczmy, jak to zrobić.
Spójrzmy na poniższy obrazek, aby lepiej zrozumieć istotę problemu. Po lewej stronie mamy tabelę w postaci macierzy (tabela przestawna), a po prawej zwykłą tabelę z kolumnami (tabela płaska):
Kiedy rozwijasz tabelę, rozpakowujesz parę atrybut-wartość, która jest przecięciem kolumn w tabeli macierzowej i zmieniasz ich orientację na spłaszczone kolumny w płaskiej tabeli:
Otwórz menu Tools - Macros - Edit Macros..., wybierz Module1 i skopiuj następujący tekst do modułu:
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
' Dodaj nowy arkusz
oBook.Sheets.insertNewByName("UnPivoted Table",0)
oNewSheet = oBook.Sheets(0)
' Określ rozmiar nagłówków
iTopLabelRowCount = InputBox(" Ile linii w górnym nagłówku? ")
iSideLabelColCount = InputBox(" Ile kolumn w bocznym nagłówku? ")
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
Następnie zamknij Macro Editor i wróć do arkusza w LibreOffice Calc. Wybierz całą tabelę z górnym i lewym nagłówkiem i uruchom nasze nowe makro poprzez menu Tools - Macros - Run Macro...
Makro wstawi nowy nazwany arkusz do skoroszytu
Możesz także skorzystać z narzędzia „Tabela przestawna (Unpivot)” instalując rozszerzenie YLC_Utilities.oxt .
Następnie narzędzie to będzie dostępne we wszystkich plikach otwieranych w LibreOffice Calc.