Macros/Calc/ba024/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 ordena una tabla basada en los valores de varias columnas. Es un ejemplo extraído del Capítulo 13 ("Calc como base de datos") de la guía de Calc 7.0 .
Descripción
Se puede clasificar un intervalo utilizando hasta tres columnas o filas en una macro. La clasificación con columnas o filas adicionales es tan fácil como agregar campos de clasificación adicionales a un descriptor de clasificación. La siguiente macro usa la hoja de calificaciones de varios alumnos del intervalo de celdas A1 a H11 de la Hoja1 en la hoja de cálculo en la descarga para ilustrar cómo ordenar por dos columnas. Los registros se clasifican en orden ascendente, Primero por la puntuación del ejercicio #1 y luego por la puntuación del ejercicio #2.
Código
Sub SortByQuizScores
Dim oSheet
Dim oRange
Dim oSortFields(1) 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 el intervalo por la columna de la puntuación del ejercicio #1
oSortFields(0).Field = 4
oSortFields(0).SortAscending = True
oSortFields(0).FieldType = com.sun.star.util.SortFieldType.NUMERIC
REM Ordenar el intervalo por la columna de la puntuación del ejercicio #2
oSortFields(1).Field = 5
oSortFields(1).SortAscending = True
oSortFields(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
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