Me solicitan una macro para que su código realice la siguiente tarea: dada una tabla X, el procedimiento deberá recorrerla y colorear aquellas cuyos números de fila sean pares. Si dicha tabla tiene 6 filas, a las nro 2, 4 y 6 les tenemos que aplicar algún color de fondo (sombreado de celda). Empecemos a visualizar el ejemplo:
Estimo existe una mejor forma de solucionar esto, sin la necesidad de utilizar macros, y es echando mano de la herramienta Formato Condicional, a la cual le incorporaremos una función que detecte si la fila en cuestión es o nó par.
[+/-] Ver el resto / Ocultar
Siguiendo con la imagen arriba mostrada, seleccionamos el rango
A2:D2 (segunda fila completa), y nos vamos a
Formato / Formato Condicional. De la lista desplegable elegimos la opción "Fórmula" (por defecto aparece "valor de la celda") e ingresamos lo siguiente:
=RESIDUO(FILA($A2);2)=0
La funcion evalúa el Residuo del numero de fila dividido 2. Este Residuo es el equivalente al Mod() de VBA, o sea el "resto de la división". Si el número es par, el resto de su división por 2 siempre me dará 0 (cero); en ese caso la función me devuelve VERDADERO y se aplica el formato, que en este caso es un "verde agua" como sombreado de celda. Luego de presionar Aceptar, tendremos esto:
Copiamos la segunda fila, seleccionamos el resto de la tabla y hacemos un Edición / Pegado Especial / Formatos, para extender este condicional al resto de los registros:
ahora se aprecia el resultado en toda la tabla.
Una variante: noten que la tabla del ejemplo llega hasta la fila 7. ¿Que pasa si nuestros usuarios continúan ingresando datos? Sería un tanto engorroso ir copiando y pegando formatos a medida que el tamaño de la tabla crezca. Para evitar esto tomamos un rango mucho mayor, por ej A2:C1000, y configuramos el siguiente formato condicional:
=Y($A2<>"";RESIDUO(FILA($A2);2)=0)
Ahora usamos a Y() para asegurarnos que se cumplan dos condiciones: seguimos con la anterior y le agregamos otra: si $A2 es <> "", es decir, si $A2 posee algún tipo de valor. Si ambas evaluaciones arrojan VERDADERO, se aplicará el formato condicional. Esto nos permitirá que la tabla, a simple vista, siga sin formato, pero las filas pares se vayan coloreando a medida que el usuario rellena datos:
Por una cuestión de espacio solo completé hasta la fila nro 12, pero funciona hasta la 1000 sin problemas.
Una cosa mas: noten que utilicé una referencia mixta al momento de señalar el rango A2, haciéndolo de la siguiente forma: $A2, dejando absoluta la columna (A) y relativa la fila (2). Es la forma correcta, de otra manera el ejemplo no arroja los resultados esperados.
no entiendo.
ResponderEliminardale un vistazo al post que te levanté y decime si te sirve:
ResponderEliminarhttp://damianexcel.blogspot.com/2010/09/lo-basico-para-el-formato-condicional.html
buenas tardes, quiero aplicar formato condicional a una tabla donde hay tres columnas de valores y deseo que en cada fila me rellene de color la casilla de menor valor.
ResponderEliminarGracias,
vas a tener que recurrir a columnas auxiliares.
ResponderEliminarte explico: supongamos que en A1:A5 tenes la primer columna de datos.
te vas a D1 (por ejemplo) e ingresas la funcion:
=Min(A1:A5), para determinar en D1 cual es el menor valor de la columna.
luego seleccionas el rango A1:A5 y en formato / formato condicional le pones lo siguiente:
valor de la celda: menor a $D$1
se entiende? hasta donde yo conozco no se pueden utilizar funciones matriciales en los formatos condicionales. así que en D1 ponemos una funcion que nos devuelva el menor valor del rango A1:A5.
Luego, aplicando el formato condicional, le indicamos que de formato a la celda del rango A1:A5 cuyo valor sea igual al que se encuentra en D1, o sea el menor valor.
espero que te sirva, cualquier cosa me avisas.
un abrazo y gracias x tu mensaje.
damian