Jump to content

Macros/Calc/ba024/es

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba024 and the translation is 100% complete.


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