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.