Vous êtes sur la page 1sur 6

Como hacer pruebas lgica empleando el

color de fondo de una celda en Excel


Hola! Cmo han estado?
Recientemente uno de nuestros usuarios nos hizo una interesante pregunta, en la cual
manifest lo siguiente: Es posible poner un color de fondo como prueba lgica
dentro de la funcin SI de Ms Excel?
La respuesta es s, existen varios mtodos con los que podemos construir la funcin a
partir de esa premisa sin embargo esta vez vamos a emplear una funcin desarrollada
por el MVP de MS Excel Chip Pearson en su blog www.cpearson.com la cual nos va
a permitir elaborar una funcin que identifica el color de fondo de una celda para
elaborar con ella luego frmula que emplee la funcin SI para aplicar una prueba lgica
al color de fondo. Es necesario aplicar esta tcnica dado que MS Excel por defecto no
trae una funcin que permita identificar el color de fondo de una
celda, debemos construirla a travs de Visual Basic.
Como todo lo dems que existe en el mundo de la computacin los colores
son realmente un nmeros. Todos los colores que se muestran en la pantalla de la
computadora se encuentran definidos a partir de combinaciones de tres componentes
primarios: uno rojo, uno verde y uno azul. Esto es lo que se conoce como cdigo RGB.
Visual Basic para Aplicaciones dispone de una funcin RGB que podemos emplear para
combinar valores de rojo, verde y azul para crear un valor de RGB en particular y en
consecuencia un color en especfico. Chip Pearson precisamente aprovech este
particular para desarrollar un set de funciones de gran utilidad que emplean como
argumento el color de fondo de una celda o de un rango de estas.
Lo primero que debemos realizar para conocer cual es nuestra paleta de colores
predeterminada es aplicar un simple cdigo para que la misma se muestre en una hoja
de clculo. La paleta de colores consta de 56 colores RGB que MS Excel soporta para
su uso por ejemplo en los fondos de celdas y colores de fuentes. El valor de estos 56
colores puede ser cualuiera de entre los 16 millones de colores disponibles pero en la
prctica en MS Excel solo podemos emplear 56 colores al mismo tiempo.
El cdigo a aplicar para conocer nuestra paleta de colores es el siguiente:
Cdigo VBA - Atencin: Antes de implementar este cdigo tome la
precaucin de guardar un soporte de su archivo. Excellentias no se
hace responsable por mal funcionamiento o daos que pueda causar la
implementacin de este cdigo.

Sub Displaypalette()
Dim N As Long
For N = 1 To 56
Cells(N, 1).Interior.ColorIndex = N
Next N
End Sub
Este cdigo cambia el color de fondo de las primeras 56 celdas de la hoja activa donde
lo ejecutemos. El nmero de fila ser igual a un nmero que llamaremos ndice de
colores, que no es ms en que la posicin se encuentra un color de los que sern
desplegados de la fila 1 a la 56.
Para aquellos que dan sus primeros pasos en VBA recuerden que para poder ejecutar
este cdigo tan solo es necesario insertar un modulo nuevo en Microsoft Visual Basic
en donde vamos a cargar todos los cdigos con los que vamos a trabajar en esta
publicacin.
Una vez cargado este cdigo lo ejecutamos desde el panel de Microsoft Visual Basic o
bien desde la Cinta de Opciones en la ficha Programador/ Macros y con esto las
primeras 56 celdas van a tener los primeros 56 colores de los 16 millones de colores
disponibles.

Despus de haberse ejecutado la macro el resultado es tal cual lo mostrado en la imagen
anexa:

Esta paleta de colores nos va a servir mediante la funcin de color
(ColorIndexOfOneCell) para determinar un valor asociado que a su vez nos va a
permitir crear la prueba lgica con la funcin SI.
A continuacin, para alcanzar nuestro objetivo inicial vamos a cargar el
siguiente cdigo de Visual Basic que nos permitir crear una nueva
funcin ColorIndexOfOneCell la cual partiendo de simples argumentos identifica cual
es el color de fondo de una celda para arrojarnos como resultado cual es el valor de
ndice de color (1 al 56) del fondo de esta:
Cdigo VBA - Atencin: Antes de implementar este cdigo tome la precaucin de
guardar un soporte de su archivo. Excellentias no se hace responsable por mal
funcionamiento o daos que pueda causar la implementacin de este cdigo.

Function ColorIndexOfOneCell(Cell As Range, OfText As Boolean, _
DefaultColorIndex As Long) As Long
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ColorIndexOfOneCell
' This returns the ColorIndex of the cell referenced by Cell.
' If Cell refers to more than one cell, only Cell(1,1) is
' tested. If OfText True, the ColorIndex of the Font property is
' returned. If OfText is False, the ColorIndex of the Interior
' property is returned. If DefaultColorIndex is >= 0, this
' value is returned if the ColorIndex is either xlColorIndexNone
' or xlColorIndexAutomatic.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim CI As Long

Application.Volatile True
If OfText = True Then
CI = Cell(1, 1).Font.ColorIndex
Else
CI = Cell(1, 1).Interior.ColorIndex
End If
If CI < 0 Then
If IsValidColorIndex(ColorIndex:=DefaultColorIndex) = True
Then
CI = DefaultColorIndex
Else
CI = -1
End If
End If

ColorIndexOfOneCell = CI

End Function
Private Function IsValidColorIndex(ColorIndex As Long) As Boolean
Select Case ColorIndex
Case 1 To 56
IsValidColorIndex = True
Case xlColorIndexAutomatic, xlColorIndexNone
IsValidColorIndex = True
Case Else
IsValidColorIndex = False
End Select
End Function

Esta funcin est compuesta por los siguientes argumentos:
=ColorIndexOfOneCell(Cell; OfText; DefaultColorIndex)

Cell: es la celda cuyo color se debe leer.
OfText: son los argumentos lgicos Verdadero o Falso que indican si se devuelve el
ndice de color de la fuente (OfText = Verdadero) o el fondo (OfText = Falso).
DefaultColorIndex: El parmetro DefaultColorIndex es un valor de ndice de color (1 a
56) que va a ser devuelto si no hay color especfico donde se ha asignado a la fuente o
el fondo del relleno.
La funcin ColorIndexOfOneCell ofrece una utilidad limitada ya que solo hace
referencia a una celda en particular para otros casos tambin Chip Pearson desarrollo
funciones adicionales con diferentes caractersticas que gustosamente pueden ver en su
publicacin Color Functions In Excel.
Ahora vamos a probar que la funcin ColorIndexOfOneCell est trabajando sin
presentar ningn inconveniente, los resultados inciales los vemos mediante la siguiente
imagen:

En efecto tal como vemos est funcionando correctamente ya que el color amarillo est
ubicado en la celda A6 por lo que el valor asociado a este es 6, ahora podemos trabajarla
en conjunto con la funcin SI.
Tras haber realizado estos pasos ahora vamos a utilizar la funcin
ColorIndexOfOneCell como prueba lgica de la funcin SI (como recomendacin
previamente se debe tener identificado cual es el valor asociado al color de la celda).
En el siguiente ejemplo tenemos una tabla con los resultados de las calificaciones de un
grupo de estudiantes con la condicin de que para aprobar la materia la nota debe ser
superior a 10 puntos sino la celda se va a colorear de rojo, para esto con anterioridad se
seleccionaron las celdas donde estn las calificaciones y se aplico Formato Condicional
con la Regla Es menor que colocando que si el valor es menor a 10 puntos el fondo
pasa a ser rojo.

Pues solo nos queda aplicar la funcin SI colocando como prueba lgica la funcin
ColorIndexOfOneCell que nos va a arrojar el valor 3 correspondiente al color rojo y si
lo asociamos con el resto de los argumentos (valor_si_verdadero) las notas que son
inferiores a 10 puntos el mensaje que se va reflejar es Reprob, (valor_si_falso) si son
mayores el mensaje es Aprob.
El resultado de esta operacin es como lo mostrado en la siguiente imagen anexa:

Para obtener este resultado previamente se deben hacer algunas modificaciones que
usualmente no realizamos sin embargo de acuerdo a nuestras necesidades nos ofrece
una excelente alternativa a una carencia de MS Excel.
Les dejamos un archivo MS Excel 2007 habilitado para macros con los pasos citados
y el ejemplo propuesto en esta publicacin.
Tienen algn otro uso que se le pueda dar a esta interesante funcin? Pues les
recordamos que est disponible nuestro foro para responder a sus dudas y debatir sus
propuestas.
Espero la publicacin les sea de mucha utilidad.
Saludos y xito!
El Equipo de EXCELLENTIAS.COM
Fuente: Color Functions In Excel de Chip Pearson, Pearson Software Consulting, LLC.

Vous aimerez peut-être aussi