Macro Formato cond. Columna, depende de otra.

Hola miren mi necesidad es esta
Macro para Aplicar formato Condicional a un rango de celdas que dependen de que la celda lateral contenga parte de un texto
Ejemplo en la celda F7 quiero aplicar el color de relleno verde determinado por .Color = 65280 pero solo quiero que se aplique si y solo si la celda G7 Contiene dentro de todo su texto la frase Completamente Funcional, hasta ahí todo va bien, pero quiero manejarlo con un ciclo porque tengo que aplicarlo a toda una columna, osea
La celda F7 como ven depende de la G7
Pero la F8 depende de la G8, y así sucesivamente
Miren tengo esta macro
Dim Serie As Integer
Serie = 7
For Serie = 7 To 962
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
Formula1:="=$G$7=""Completamente Funcional"""
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65280
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
ActiveCell.Offset(1, 0).Range("A1").Select
Next Serie
mi nececidad es q si hay alguna manera de hacer que en la linea de -- Formula1:="=$G$7=""Completamente"""
El numero de la celda se vaya incrementando tomando el valor de mi variable de tipo entero "Serie" para que en la siguiente en lugar de 7 valga 8
No se si exista un método más fácil, pero en la manera posible si se puede hacer así como lo explico creo que entendería más fácil, gracias de antemano, buen día
{"lat":19.6485692877719,"lng":-99.2129802703857}
1

1 respuesta

Respuesta
1
Esto lo puedes hacer más fácil usando formato condicional. Aquí un ejemplo
Selecciona la celda que deseas colorear, por ejemplo A1
Grupo Inicio - Formato Condicional - Administrar Regla-Nueva Regla
Para el tipo de regla selecciona: Utilizar Fórmula que determine las celdas para aplicar formato
Aqui colocaras lo siguiente =$B$1="baja" Veras que al colocar baja en la celda B1 o la celda A1 cambiara de formato
¿Cómo lo extendiendes a las demás demás?
Selecciona la celda A1 y B1 y vas a la herramienta copiar formato ( la escoba) y seleccionas el rango por ejemplo A2:B100 y ya quedara copiado para ese rango.
Sino te resulta este método o no te parece (pero para mi es la ideal) puedes intentarlo con vba. Una forma seria colocar una estructura repetitiva como while o for que recorran toda la columna para chequear las condiciones pero te podrían lento el calculo del libro.
La forma siguiente (como ejemplo) trata de evitar esto pero tiene su limitante, al actualizar el valor de la celda debes darle enter
Pruébalo a ver si te sirve. Esta desde el Rango B1 al B100 pero puedes extenderlo y/o adaptarlo a tus necesidades
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B1:B100")) Is Nothing Then
ActiveCell.Offset(-1, 0).Select
If ActiveCell = "BAJA" Then
ActiveCell.Offset(0, -1).Select
Selection.Interior.ColorIndex = 6 ' amarillo
Else
If ActiveCell <> "BAJA" Then
ActiveCell.Offset(0, -1).Select
Selection.Interior.ColorIndex = xlNone
End If
End If
End If
End Sub
Saludos
Cualquier duda estoy a la orden.
Hola que tal elmatador gracias pro responder he intentar ayudarme
Pero te explicare haber si soy ms claro pues mira, mi problema no es aplicar formato condicional se como aplicarlo así como dices, el asunto es que al arrastrar la fórmula sigue dependiendo como una referencia absoluta de la celda osea si tienes por decir el rango de A1:A10 y quieres que dependan de B1:B10 de manera que A1 depende de B1 y A2 depende de B2 y así sucesivamente, el problema es que al arrastrar con copiar formato o de cualquier modo, las celdas A1, A2, A3, ... todas toman el valor de B1 y así no me sirve, por eso preguntaba por el método de vb
Trate de probar tu código, pero lo intente insertar en una macro o estando en la celda o en un commandbuton y nada no me da. Si quizás me ayudas como ponerlo para ve si así funciona, lo de teclear enter quizás se pueda solucionar mandando un key automático pero eso ya seria adaptarlo, gracias de todos modos espero tu respuesta.
Saludos.
Te comento, cuando estableces el valor $B$1 puedes usar B1 solamente y allí si te sirve la fórmula, de esta forma haces la referencia relativa y no absoluta
Para el código vba no lo debes colocar en un botón sino en el código de la hoja
Para ello le das botón derecho sobre la hoja donde lo aplicaras y seleccionas código. Allí pegas lo que te envíe.
Cuando coloques BAJA en alguna celda entre b1 y b100 se "pinta" amarillo.
HOLA DE NUEVO, mira ya lo probé, en cuanto a usar al referencia relativa en el formato condicional ya lo había probado, pero no funciono tampoco al arrastrar la aplica igual sobre la misma celda osea hace que todas dependan de una celda absoluta, pero bueno,
Lo del código ya lo probé como dijiste, si funciona, pero lo que veo es que se basa solo al contenido completo de la celda y no a una parte del texto, de modo que lo que enecesito es algo así como poner, por decir en la celda B1 "bla, bla bla Cumple. - bla bla y más bla" entonces que la celda A1 se rellene de un color unicamente si parte del texto tiene esa palabra "Cumple." manejo 3 palabras par determinarlo pero bueno la de cumple es un ejemplo,
Y por ultimo pues veo que usas nomeros para los colores, me podrías decir el código de los colores veo que en amarillo = 6 pero en los otros
Muchas gracias por tu anteción a mi caso que tengas buen día espero tu respuesta GRacias
Del primer punto definitivamente no estas aplicando bien el formato condicional (Te recomiendo revises información al respecto ya que hay cosas que son super sencillas que salen sin "matarse" escribiendo un macro)
Por lo demás aquí esta, puedes agregar el bla bla bla (3 palabras) a la condición por ejemplo
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B1:B100")) Is Nothing Then
ActiveCell.Offset(-1, 0).Select
If ActiveCell = "bla bla bla" Then
ActiveCell.Offset(0, -1).Select
Selection.Interior.ColorIndex = 10 ' verde
Else
If ActiveCell <> "bla bla bla" Then
ActiveCell.Offset(0, -1).Select
Selection.Interior.ColorIndex = xlNone
End If
End If
End If
End Sub
y para los colores
http://dmcritchie.mvps.org/excel/colors.htm
Hola ok
Voy a probar y te comento los resultados, te agradezco, tus respuestas prontas,
Y en cuanto a lo del formato condicional pues ya intente hacerlo con macro y aplicarlo con la relativa pero bueno quizás algo se me paso por ahí, lo chequearé,
Pero bueno voy a proibar el código que me enviaste ahor ay te comento los resultados
Te agradezco que tengas buen día
Ok.
Y cualquier cosa preguntas o finaliza la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas