Chuck escribió sobre la necesidad que tiene de ordenar registros en una hoja de trabajo según el color de relleno utilizado en una celda. Excel no proporciona una función intrínseca para realizar tal acción, pero es posible crear una función definida por el usuario que ayudará con cualquier clasificación que deba realizarse. Considere la siguiente macro:

Function GetFillColor(rng As Range) As Long     GetFillColor = rng.Interior.ColorIndex End Function

Suponiendo que los colores de relleno están en las celdas de la columna A, todo lo que necesita hacer es asegurarse de que haya una columna vacía B. Luego, coloque la siguiente fórmula en la celda B2 y cópiela para cada registro:

=GetFillColor(A2)

Cuando haya terminado, la columna B contendrá los valores de índice de cada color de relleno utilizado en la columna A. Luego, puede ordenar por la columna B, que tiene el resultado de agrupar todos los colores de relleno similares.

Si necesita ser más elaborado, por ejemplo, si necesita ordenar en un orden particular (amarillo primero, rojo segundo, verde tercero, etc.), entonces no puede confiar únicamente en el valor del índice del color de relleno. En tal caso, debe confiar en un método diferente para devolver un color.

Considere la siguiente macro:

Function GetColor(rngIndex As Range, rngSource As Range) As Long     Dim lngColor As Long     Dim J As Integer

Application.Volatile     lngColor = rngSource.Interior.ColorIndex

GetColor = 99       'Set to default color     For J = 1 To rngIndex.Count         If rngIndex(J).Interior.ColorIndex = lngColor Then             GetColor = J         End If     Next J End Function

Esta macro funciona de manera diferente a la anterior. Requiere dos rangos para funcionar correctamente. El primer rango es básicamente una tabla de colores que indica el orden en el que desea ordenar los colores. Por ejemplo, las celdas E1 a E9 podrían contener los nueve colores que desea usar para clasificar, en el orden en que desea clasificarlos. Luego, colocaría la siguiente fórmula en la celda B2 y la copiaría para cada registro:

=GetColor($E$1:$E$9,A2)

El resultado es que la columna B contendrá los valores del 1 al 9, que representan los colores en su tabla de colores. Si el color en una celda no tiene un color correspondiente en la tabla de colores, entonces la función devuelve el valor de 99. Cuando ordena los registros en su tabla, termina ordenándolos como desee.

_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 (2009) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.