Ed hizo la pregunta de Excel de esta semana.
Necesito una macro simple de Excel que buscará, digamos, la Columna C y resaltará en rojo las celdas que contienen la fecha de hoy (fecha actual) y resaltará en amarillo cualquier otra celda en la columna que sea 15 días en el futuro desde la fecha de hoy.
Los usuarios de Excel 97 o Excel 2000 pueden aprovechar la nueva opción de formato condicional. Veamos primero cómo hacer esto manualmente sin una macro.
- Mover a la celda C1.
- En el menú, elija Formato, Formato condicional
- En el lado izquierdo del cuadro de diálogo, cambie el menú desplegable para que lea "La fórmula es"
- En el lado derecho del cuadro de diálogo, ingrese:
=INT(C1)=TODAY()

- Haga clic en formato, haga clic en Patrones, elija Rojo. Haga clic en Aceptar
- Haga clic en Agregar …
- En el lado izquierdo del cuadro de diálogo, cambie el menú desplegable para que lea "La fórmula es"
- En el lado derecho del cuadro de diálogo, ingrese:
=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)
- Haga clic en Formato, haga clic en Patrones, seleccione amarillo. Haga clic en Aceptar.
- Haga clic en Aceptar para terminar de asignar este formato condicional a la celda C1.

Si el formato se ingresa correctamente, la celda C1 cambiará a rojo si contiene la fecha de hoy y a amarillo si la fecha es en las próximas 15 semanas. La función TODAY () en el formato asegurará que si abrimos el libro de trabajo en otro día, resaltará en rojo las celdas para ese día en particular.
Ahora puede copiar la celda C1, resaltar todos los datos en la columna C y hacer Edición> Pegado especial> Formatos> Aceptar para aplicar ese formato a cada celda en la columna C.
La siguiente macro automatizará la asignación del formato condicional:
Sub Macro2() Range("C1").Select Selection.FormatConditions.Delete Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=INT(C1)=TODAY()" Selection.FormatConditions(1).Interior.ColorIndex = 3 Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(INT(C1)>TODAY(),(INT(C1)-TODAY())<16)" Selection.FormatConditions(2).Interior.ColorIndex = 6 Selection.Copy FinalRow = Range("C15000").End(xlUp).Row Range("C2:C" & FinalRow).Select Selection.PasteSpecial Paste:=xlPasteFormats End Sub
Para los usuarios de Excel 95, no tiene formato condicional, pero podría usar una macro como esta:
Sub Macro95() ThisDate = Date FinalRow = Range("C15000").End(xlUp).Row For x = 1 To FinalRow ThisCell = Int(Range("C" & x).Value) If ThisCell = ThisDate Then Range("C" & x).Interior.ColorIndex = 3 Else DaysFromNow = ThisCell - ThisDate If DaysFromNow> 0 And DaysFromNow < 16 Then Range("C" & x).Interior.ColorIndex = 6 End If End If Next x End Sub
La función de fórmula de la función de formato condicional es muy poderosa y le permitirá resaltar celdas que se ajusten a varios criterios.