Excel le permite ordenar los datos en sus hojas de trabajo por cualquier número de atributos. Sin embargo, una de las cosas por las que no puede ordenar intrínsecamente es el color de las celdas, al menos no sin actualizar a Excel 2007 o posterior. Para algunas aplicaciones, esta podría ser una característica muy útil.

La siguiente macro, SortByColor, ordenará una tabla en función del color con el que se formatea una celda.

Sub SortByColor()

On Error GoTo SortByColor_Err

Dim sRangeAddress As String     Dim sStartCell As String     Dim sEndCell As String     Dim rngSort As Range     Dim rng As Range

Application.ScreenUpdating = False

sStartCell = InputBox("Enter the cell address of the " & _       "top cell in the range to be sorted by color" & _       Chr(13) & "i.e.  'A1'", "Enter Cell Address")



If sStartCell > "" Then         sEndCell = Range(sStartCell).End(xlDown).Address         Range(sStartCell).EntireColumn.Insert         Set rngSort = Range(sStartCell, sEndCell)

For Each rng In rngSort             rng.Value = rng.Offset(0, 1).Interior.ColorIndex         Next         Range(sStartCell).Sort Key1:=Range(sStartCell), _           Order1:=xlAscending, Header:=xlNo, _           Orientation:=xlTopToBottom         Range(sStartCell).EntireColumn.Delete     End If

SortByColor_Exit:

Application.ScreenUpdating = True     Set rngSort = Nothing     Exit Sub

SortByColor_Err:

MsgBox Err.Number & ": " & Err.Description, _       vbOKOnly, "SortByColor"

Resume SortByColor_Exit End Sub

La macro funciona preguntándole primero la celda inicial del rango que desea ordenar. Esta debería ser la celda más alta del rango. Luego, la macro inserta una columna (solo temporalmente) en la que se pueden almacenar los valores de color. Luego recorre cada celda en el rango definido por la celda inicial que especificó.

SortByColor asume que su tabla de datos no tiene una fila de encabezado. Si es así, debe cambiar el comando de clasificación real. Simplemente cambie Encabezado: = xlNo a Encabezado: = xlYes.

Debe tener en cuenta que la macro SortByColor solo clasificará las celdas según el color explícito aplicado a la celda, no clasificará si el color de la celda es el resultado de un formato condicional.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (3122) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posterior) aquí:

enlace: / excelribbon-Sorting_by_Colors [Clasificación por colores].