TOP

Reorganisation von Tabellen (Unpivot) in LibreOffice Calc

Beschreibung

Manchmal besteht die Notwendigkeit, einen Kreuztisch (Pivottisch) in einen flachen Tisch umzuwandeln. Dieses Verfahren heißt „ Datenbegradigung " (unpivot data) . Als Ergebnis einer solchen „ Richten „Wir erhalten eine Tabelle, in der sich alle ähnlichen Daten in einer Spalte befinden.

Das Programm LibreOffice Calc verfügt nicht über eine Standardfunktionalität zum Konvertieren von Pivot-Tabellen in „ Wohnung ", aber Sie können die entsprechende Prozedur selbst schreiben. Mal sehen, wie es geht.



Schauen wir uns das Bild unten an, um den Kern des Problems besser zu verstehen. Links haben wir eine Tabelle in Form einer Matrix (Pivot-Tabelle) und rechts eine reguläre Tabelle mit Spalten (flache Tabelle):

Wenn Sie eine Tabelle erweitern, entpacken Sie das Attribut-Wert-Paar, das den Schnittpunkt der Spalten in der Matrixtabelle darstellt, und richten es in den abgeflachten Spalten der flachen Tabelle neu aus:

  • Wert (Values) (blau links) in eine neue Spalte erweitern (blau rechts);
  • Attribute (Attributes) (links grün) werden ebenfalls in eine neue Spalte (rechts grün) erweitert und entsprechend der neuen Wertespalte dupliziert.
  • StarBASIC-Code für die UnPivotTable-Prozedur

    Öffnen Sie das Menü Tools - Macros - Edit Macros..., wählen Sie Module1 aus und kopieren Sie den folgenden Text in das Modul:

    1. Sub UnPivotTable  
    2.   ' moonexcel.com.ua   
    3.   Dim oBook        As Object  
    4.   Dim oActiveSheet As Object  
    5.   Dim oSelRange    As Object  
    6.   Dim oNewSheet    As Object  
    7.     
    8.   Dim i                  As Long  
    9.   Dim iTopLabelRowCount  As Integer  
    10.   Dim iSideLabelColCount As Integer         
    11.     
    12.   oBook        = ThisComponent  
    13.   oActiveSheet = oBook.CurrentController.ActiveSheet  
    14.   oSelRange    = oBook.CurrentSelection  
    15.     
    16.   ' Fügen Sie ein neues Blatt hinzu   
    17.   oBook.Sheets.insertNewByName("UnPivoted Table",0)  
    18.   oNewSheet = oBook.Sheets(0)  
    19.     
    20.   ' Bestimmen Sie die Größe der Header   
    21.   iTopLabelRowCount  = InputBox(" Wie viele Zeilen enthält die obere Kopfzeile? ")  
    22.   iSideLabelColCount = InputBox(" Wie viele Spalten enthält die Seitenkopfzeile? ")  
    23.               
    24.   i = 0  
    25.        
    26.   For r = (iTopLabelRowCount + 1) To oSelRange.Rows.Count  
    27.     For c = (iSideLabelColCount + 1) To oSelRange.Columns.Count              
    28.                          
    29.       For j = 1 To iSideLabelColCount                
    30.         oNewSheet.getCellByPosition(j-1, i).Formula = oSelRange.getCellByPosition(j-1, r-1).Formula                 
    31.       Next j  
    32.                
    33.       For k = 1 To iTopLabelRowCount  
    34.         oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, k-1).Formula  
    35.       Next k             
    36.                            
    37.       oNewSheet.getCellByPosition(j + k - 2, i).Formula = oSelRange.getCellByPosition(c-1, r-1).Formula  
    38.       i = i + 1                     
    39.               
    40.     Next c  
    41.   Next r  
    42. End Sub  

    Schließen Sie dann Macro Editor und kehren Sie zu Ihrem Arbeitsblatt in LibreOffice Calc zurück. Wählen Sie die gesamte Tabelle mit den oberen und linken Überschriften aus und führen Sie unser neues Makro über das Menü Tools - Macros - Run Macro aus...

    Das Makro fügt ein neues benanntes Blatt in Ihre Arbeitsmappe ein "UnPivoted Table" , und fügen Sie dann eine Tabelle im neuen Format hinzu. Mit einer solchen Tabelle können Sie jede beliebige Analyse in LibreOffice Calc durchführen.

    Verwendung der Erweiterung

    Sie können das Dienstprogramm auch verwenden „Pivot-Tabelle (Unpivot)“ durch die Installation der Erweiterung YLC_Utilities.oxt .

    Danach ist dieses Dienstprogramm in allen Dateien verfügbar, die in LibreOffice Calc geöffnet werden.

    Artikel zum Thema:

  • Reorganisation von Tabellen (Unpivot) in Excel