Buscar coincidencias de una selección en otra hoja y pintar resultados

Hola a todos, tengo que hacer una búsqueda de una lista variable (hoja1) de valores en un rango (hoja2) y pintar la celda de los valores encontrados. Por ejemplo:

Hoja1

A1

rojo

verde

azul

verde

blanco

negro

n

Hoja2

A1 A2

negro verde

blanco azul

rojo verde

verde rojo

violeta negro

Aclaración:

Rango de hoja2 es fijo.

Cada coincidencia se debe pintar del mismo color, todos los verdes color x los negros color y etc.

Yo logro hacer la búsqueda pero para un solo valor, no puedo hacer la búsqueda en función de la selección de la hoja1.

Muchas Gracias

sdos

Saino

Respuesta
1

Aclara x favor:

1 - Si recorremos la col a de Hoja1,

A2=rojo, al encontrar el valor 'rojo' en la col A de hoja2 qué color se le asigna.

A3=verde, al encontrar el valor 'verde en la col A de hoja2 qué color se le asigna.

Y así con el resto.

2- ¿Si no encuentra valor en col A de hoja2 se continua con la col B?

3- ¿A quién se le asigna el color? ¿A la celda de la hoja1 o de la hoja2?

Espero tus aclaraciones.

Hola Elsa gracias por contestar, mira estuve probando y lo pude resolver de la siguiente manera:

Mi programación de bastante rustica pero me funciono. Tuve que agregar hoja3 donde puse tres columnas con valores que van de 0 a 255 desordenados y repetidos varias veces hacia abajo para poder utilizar mas de 256 colores si se me presentara el caso en que tenga mas de 256 repeticiones.

código:

Sub Buscar_Valor()
Application.ScreenUpdating = False
' agigno un valor numérico para red, blue y green tomándolos de la hoja3
r = Sheets("hoja3").Cells(i + 1, 1).Value
g = Sheets("hoja3").Cells(i + 1, 2).Value
b = Sheets("hoja3").Cells(i + 1, 3).Value
Sheets(1).Select
Range("a1").Select
' mi rango de búsqueda es siempre una columna en A1 que puede
' llegar a tener mas de 256 valores distintos.
' recorro los valores en columna A de hoja1 mientras contenga datos
While ActiveCell <> Empty
valorb = ActiveCell
Sheets(2).Select
ActiveSheet.Range("a1").Select
' determino la cantidad de filas que hay en la matriz de la
' la hoja dos.
numfilas = ActiveSheet.Range("A65536").End(xlUp).Row
'busco hacia la derecha mientras este lleno
While ActiveCell <> ""
'recorro hacia abajo buscando coincidencias
For ii = 1 To numfilas
' si el valor coincide con el de la hoja 1 pinto la celda
If valorb = ActiveCell Then
ActiveCell.Interior.Color = RGB(r, g, b)
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next
' vuelvo a la primer fila y me paso a la columna 2 de la matriz
' repito el for
ActiveCell.Offset(-numfilas, 1).Select
Wend
' aca recorro hoja3 bajando una fila y reasigno nuevo valor numérico
' a las variables r,g,b
fila = fila + 1
r = Sheets("hoja3").Cells(fila + 1, 1).Value
g = Sheets("hoja3").Cells(fila + 1, 2).Value
b = Sheets("hoja3").Cells(fila + 1, 3).Value
Sheets("hoja1").Activate
ActiveCell.Offset(1, 0).Select
Wend
End Sub
Aclaraciones:

1.- Hoja1 valores a buscar (una sola columna de x valores) yo en el ejemplo puse colores pero en realidad son secuencias de ADN.

2.- Hoja2 va la matriz x con x secuencias (maximo 384) de ADN donde se deben pintar de cualquier color las coincidencias. Se pueden repetir las secuencias y deben tener el mismo color.

3.- Hoja3 tomo de tres columnas de valores desordenados de 0 a 255 para poder tenr mas de 256 colores.

De todas formas me gustaria ver tus comentarios, me has ayudado en mas de una ocación y tienes una logica muy clara y expeditiva al igual que todas las explicaciones que tienes en tu página.

Muchas gracias.

Saino

Justo elegiste nombres de 'colores' para dar color... de ahí la poca claridad en el proceso.

Si ya lo resolviste así no hay nada que agregar. Se podría hacer un bucle incrementando los distintos valores de R, G y B... pero ya está y con menos trabajo ;)

Sdos

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas