A veces es necesario convertir una tabla transversal (pivotante) en una plana. Este procedimiento se llama " enderezamiento de datos "
El programa LibreOffice Calc no tiene una funcionalidad estándar para convertir tablas dinámicas a " departamento ", pero puedes escribir tú mismo el procedimiento correspondiente. Veamos cómo hacerlo.
Miremos la imagen a continuación para comprender más claramente la esencia del problema. A la izquierda tenemos una tabla en forma de matriz (tabla dinámica) y a la derecha, una tabla normal con columnas (tabla plana):
Cuando expandes una tabla, descomprimes el par atributo-valor que es la intersección de las columnas en la tabla de matriz y las reorientas en las columnas aplanadas en la tabla plana:
Abra el menú Tools - Macros - Edit Macros..., seleccione Module1 y copie el siguiente texto en el módulo:
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
' Agregar una nueva hoja
oBook.Sheets.insertNewByName("UnPivoted Table",0)
oNewSheet = oBook.Sheets(0)
' Determinar el tamaño de los encabezados.
iTopLabelRowCount = InputBox(" ¿Cuántas líneas hay en el encabezado superior? ")
iSideLabelColCount = InputBox(" ¿Cuántas columnas hay en el encabezado lateral? ")
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
Luego, cierre Macro Editor y regrese a su hoja de trabajo en LibreOffice Calc. Seleccione toda la tabla con los encabezados superior e izquierdo y ejecute nuestra nueva macro a través del menú Tools - Macros - Run Macro...
La macro insertará una nueva hoja con nombre en su libro de trabajo.
También puedes usar la utilidad. "Tabla dinámica (Unpivot)" instalando la extensión YLC_Utilities.oxt .
Después de eso, esta utilidad estará disponible en todos los archivos que se abrirán en LibreOffice Calc.