Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

¿Cómo buscar un valor en un rango de celdas en VBA?

| 13 comentarios

En Excel, podemos encontrar formas de verificar si un valor existe dentro de un rango de valores. Por ejemplo, se puede utilizar la función “o”, que devuelve “verdadero” si encuentra el valor deseado. Asimismo, se puede utilizar la función contar.si que devuelve la cantidad de veces que aparece el valor deseado.

Por otro lado, si lo que se requiere es conocer exactamente las celdas donde se encuentra el valor deseado, se debe desarrollar una macro que realice esa búsqueda y los resalte.

Para programar esta macro, primero se deben definir las variables a utilizar.

Se requiere que el usuario ingrese en qué rango se van a buscar los valores y el valor que se desea encontrar. Además, se definen las variables resultado como rango (que es donde se realizará la búsqueda) y contador para determinar cuántas veces se repite este valor. Igualmente, se define la ubicación de la primera búsqueda que servirá para finalizar la búsqueda de valores.

fig1

(Para mayor visualización de la imagen, hacer click en la misma)

Después de definir variables, se coloca el código Find donde se indica el rango de búsqueda. Se señala el valor a buscar y la forma de búsqueda.

fig2

 

(Para mayor visualización de la imagen, hacer click en la misma)

Se ha agregado al código, instrucciones que muestran mensajes de acuerdo a las respuestas obtenidas. Con una lógica If…End if se muestra un mensaje dependiendo de cuántas coincidencias encuentre o si no encuentra coincidencias.

fig3fig4fig5

Además, se incluye una lógica Do…Loop while, donde se coloca el código FindNext para seguir buscando coincidencias hasta que ya no encuentre más y no repita la ubicación del primer valor. Todos los valores encontrados cambiarán de color de fondo a verde y el color de fuente cambiará a blanco.

Para que el usuario pueda ingresar el rango y el dato que desea buscar, se ha colocado un formulario con los botones Nueva búsqueda y Salir.

fig6

Por último, se han colocado dos botones, uno para comenzar la búsqueda y el otro para limpiar la hoja de los colores de búsquedas previas.

fig7

(Para mayor visualización de la imagen, hacer click en la misma)

El código utilizado se puede encontrar en :

Cómo buscar un valor en un rango de celdas en VBA

 

Artículo escrito por: Piero Arbulú Zumaeta

13 comentarios

  1. una pregunta y si en la celda hay varios valores como por ejemplo un numero "12354-456 y despues un nombre juan silvio, pero yo quiero realizar la busqueda con el codigo de numero, como hago para que se realize esa busqueda.

    espero tu respuesta

  2. Cordial saludo, con tu ejemplo he realizado un procedimiento, pero tengo un grave error, son varios los datos a buscar, pero en ocaciones los busca y en otras los pasa derecho sin siquiera intentar hacer. Para realizar la busqueda es totalmente necesaria la instruccion que sigue luego de .Find(valorbuscado ya que lo que he hecho es cerrar el parentesis ahi?
    gracias

  3. Ha sido muy útil 🙂 Gracias!

    Un saludo

  4. Hola, muchas gracias me facilto muchas cosas

  5. Hola

    Una vez que encuentro un valor, como puedo llevar toda la fila correspondiente a un listbox??

    Muchas gracias

  6. Excelente muchas gracias!!!!!

  7. perdoneme la expresion pero no tengo mas comentario que decir que: que chimba

    muchas gracias por el valioso aporte y que Dios te bendiga a usted y a los suyos
    feliz dia

  8. Muchas gracias. Es de gran ayuda... 🙂

  9. ayuda para buscar valor y remplazarlo, como se hace en los inventarios

  10. es excelente muchas gracias y para llevarlo a un listbox como pregunta juan yo usaria selection y los copiaria a un rango y hay se usaria la propiedad Rousorce para adherir ese rango a mi ListBox esta es muy sencilla y a pedal

  11. tambien le hice una modificacion al TextBox1 para que a l inicializar el formulario el ya tenga todo el rango de la hoja en caso de que no me importe buscar en toda la hoja asi me ahorro el tiempo en que tengo colocar manualmente el rango y por otra parte de todos modos si quiero colocar un rango simplemente lo coloco y listo

  12. Hola compañeros una consulta estoy realizando un formulario de búsqueda,
    deseo buscar registros por su DNI en otra hoja para que ese registro se guarde en otro formulario como una id que contendrá otra información.

    Me pueden ayudar por favor!!

  13. Espero y me puedan apoyar. Ya tengo una semana buscando una solucion y no la encuentro. Ocupo CONCATENAR varias celdas pero estas debes estar de acuerdo a 3 criterios: 1.- Que la fecha inicial que sea mayor o igual a la que deseo 2.- Que la fecha final sea menor a la que deseo y 3.- Que dentro de ese rango este un texto que debo especificar ya sea en celda o escrito dentro de la formula.
    En pocas palabras concatenar un rango de mi criterio pero que este dentro del rango de fechas

Deja una respuesta

Los campos requeridos estan marcados con *.