¿Cómo comparar el valor de una celda contra los valores de un grupo de celdas en Visual Basic?

Estoy atorado con una macro que debe evaluar el contenido de una celda contra el de un grupo de celdas.

Solo sé como hacer que una celda se compare contra otra celda así: range("A1") <> range("A2")

Pero me gustaría poder comparar una celda contra un grupo de celdas, algo así range("A1") <> range("A2:A10") solo que no conozco la sintaxis correcta. Así como lo escribí, no me lo acepta visual basic.

¿Alguien me podría decir cómo le hago para poder lograr esto?

Respuesta

Desde España:

Hay un truco fácil que puedes hacer:

La función "O" (en inglés sería "OR"), compara dos valores y devuelve Verdadero si ambos son iguales.-

Pues bien, introduciendo esta fórmula como una fórmula matricial, comprueba todo el rango de valores...

Así pues, en la casilla que desees, le tienes que poner la siguiente fórmula:

=O(A2:A10=A1)

Pero claro, tal como está, no te va a funcionar, así que, para que funcione, en vez de salir pulsando ENTER como es normal, sal pulsando CTRL+SHIFT - ENTER. La fórmula cambiará como esto, indicando que es una función matricial:

{=O(A2:A10=A1)}

Y en la casilla donde has escrito la fórmula, aparecerá "VERDADERO" en caso de que alguna celda del rango coincida con el valor de la casilla A1, o "FALSO" en caso de que no haya coincidencias.

Un saludo, y espero que esto te sirva.-

1 respuesta más de otro experto

Respuesta
1

Esta podría ser una manera:

Sub Comparar()
'Por.Dante Amor
    Set b = Range("A2:A10").Find(Range("A1"), lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "El dato no existe"
    Else
        MsgBox "El dato se encuentra en la celda : " & b.Address
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Hola Dante!

Mira basándome en tu respuesta intenté lo siguiente:

' Macro13 Macro
'
Set b = Range("d23:d26")
Do
Calculate
Loop Until Range("d22") <> b
End Sub

Pero me marca error el depurador. ¿Qué es lo que está mal y cómo lo corrijo?

Prueba con mi macro.

Con todo gusto reviso tu macro, pero primero revisa el resultado de mi macro.

Lo que hace mi macro es buscar el valor en el rango de celdas, eso lo hace de manera inmediata, si lo encuentra te avisa, si no lo encuentra te envía un mensaje de "no existe".

Lo que pretendes hacer con tu macro es revisar celda por celda, pero hay que hacerle varios cambios a tu macro. Por eso, mejor prueba con mi macro.

Sal u dos

Hola Dante!

Tu macro funciona bien, pero lo que necesito saber es cómo hacer el ajuste en la mía. El ejemplo que puse es para simplificar lo que quiero. El proyecto que realmente estoy haciendo es un poco más complejo que eso y para ese no me sirve mucho la opción que amablemente me propones

Con mucho gusto te ayudo con todas tus peticiones. Incluso te ayudo con el ciclo Do - Loop While y también te muestro el ciclo Do While -  Loop

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas