Macros/Calc/ba023/es
TDF LibreOffice Document Liberation Project Blogs comunitarios Weblate Nextcloud Redmine Ask LibreOffice Donar
Resumen:
Esta página proporciona un procedimiento de LibreOffice Basic LibreOffice que clasifica una tabla basada en los valores de una columna. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la guía de Calc 7.0.
Descripción
En una macro de Calc, los datos dentro de un intervalo se ordenan llamando al método sort () en el objeto de intervalo. Cuando se llama a una operación de clasificación en un intervalo, se pasa una matriz de propiedades conocidas como un "SortDesc" al método "sort". Contenidos dentro de las propiedades de un descriptor están SortFields, que son estructuras que informan a Calc cómo ordenar un intervalo de acuerdo con los datos contenidos dentro de una de sus filas o columnas.
Como ejemplo, la siguiente macro clasifica las calificaciones de unos alumnos en el intervalo A1:H11 de la Hoja1 según la media (columna H) en orden descendente. La hoja de cálculo para la descarga, contiene dicha hoja de calificaciones. Atención: el valor del índice de campo (Field) de la variable Sortfield comienza en la posición relativa al intervalo seleccionado. Por ejemplo, si el intervalo seleccionado abarca desde C1 a H11, la columna C tiene el índice de campo 0.
Código
Sub SortAverageGrade
Dim oSheet
Dim oRange
Dim oSortFields(0) as new com.sun.star.util.SortField
Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
oSheet = ThisComponent.Sheets(0)
REM Establecer el intervalo que se va a ordenar
oRange = oSheet.getCellRangeByName("A1:H11")
REM ordenar en función de la columna H (posición 7 dentro del intervalo, con índice 0) en orden descendente
oSortFields(0).Field = 7
oSortFields(0).SortAscending = FALSE
REM Establecer los campos de ordenación
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Ordenar el intevalo
oRange.Sort(oSortDesc())
End Sub
Este documento de Calc incluye la macro en LibreOffice Basic