colorear celdas en rojo con condicion

2 envíos / 0 nuevos
Último envío
jhon6666
Imagen de jhon6666
Offline
última acción: Hace 5 años 6 meses
alta: 14/10/2018 - 05:50
Puntos: 25
colorear celdas en rojo con condicion

hola expertos tengo este trabajo y de acuerdo al numero que se encuentre en la celda a1 mi codigo lo busca en las tablas y lo marca de color amarillo 

pero quisiera ir mas alla y quisiera agregarle una condicion al codigo como la siguiente

que  si la distancia (en celdas) entre la primer cifra coloreada de amarillo y la segunda cifra sea igual a la distancia entre la tercer cifra y la cuarta cifra y por ultimo se colorearan en rojo

AdjuntoTamaño
File colorear celdas bajo condicion428.41 KB

Etiquetas: 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 semana 3 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
lo primero ¿sabes que Excel

lo primero ¿sabes que Excel tiene una cosa llamada Formato Condicional que colorea celdas basado en condiciones?

Quiero decir, que lo de colorear de amarillo las celdas que coincidan con un valor o con una condición no requiere programación. Pero bueno, eso es otra historia.

 

Sobre tu pregunta de las distancias en celdas:

En tu código, ahora mismo, no sabes en qué posición encuentra el número, simplemente los recorre todos, pero no sabemos en qué posición se produce la aparición.

Mi consejo es que tu procedimiento BuscarÁrea (yo no pondría acentos en los nombres dentro de VBA) en vez de que sea un SUB, lo convirtieras en una función que devolviese como resultado la posición donde ha encontrado el valor.

ese valor ya lo puedes guardar en cada columna y comparar las distancias, o lo que necesites.

así que cambiaría más o menos así (pongo en negrita lo que he cambiado):

 

Function BuscarÁrea(n As Integer, Número As Integer, x1 As Long, x2 As Long) As Integer

Application.ScreenUpdating = False

y = (n - 1) * 2 + 5  'empieza en col E

aTablas:

Range(Cells(x1, y), Cells(x2, y)).Interior.ColorIndex = xlNone

For x = x1 To x2

   If Cells(x, y) = Número Then

      Cells(x, y).Interior.Color = vbYellow

      BuscarÁrea = x    'asignamos el valor del resultado

      'pasa a la tabla siguiente

      GoTo siguenTablas

   End If

Next

siguenTablas:

'sigue con otras tablas

y = y + 9

If y > 57 Then Exit Function

GoTo aTablas

End Function

 

En las llamadas que hagas ahora al procedimiento, puedes guardar el resultado en una variable, por ejemplo

resultado = BuscarÁrea(n, Mid(valor, n, 1), 4, 13)

bueno, esto ya tendrás que organizarlo según la comprobación que quieras hacer

 

------
Ya sé Excel, pero necesito más.