Excel Avanzado

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

Excel Avanzado
Logo Excel Avanzado

Buscar y reemplazar masivo VBA

| 14 comentarios

Sucede que a veces tenemos que ejecutar el buscar y reemplazar dentro de nuestro Excel varias veces, siempre bajo los mismos criterios .... aquí una versión simplificada de como resolverlo:

Bien, asumamos que tenemos una relación de datos a reemplazar, para simplificar como la siguiente:

Datos

En esa relación encontramos que varios de los nombres han sido obtenidos de forma incorrecta (con errores ortográficos) , por lo que se hace necesario tener una relación de correcciones a realizar. Dicha relación de cambios esta anotada en una lista siguiente , la cual esta en otra hoja, tal como sigue:

Lista

Una solución (simplificada) sería como la siguiente, naturalmente hay cosas que mejorar aquí, como el uso de la última fila, y otros detalles, pero es un primer paso ... en una publicación posterior colocaré una solución mas completa.

Reemplazo01

El resultado de la ejecución en nuestra hoja de Excel sería:

resultado01

Esta solución es particularmente útil cuando se reciben los datos errados de la misma fuente mas de una vez, lo cual provoca que cada vez trabajemos de nuevo con los datos nos podemos ahorrar el tiempo de corrección manual respectivo.

Utilizar buscar y reemplazar en Excel con macros

El ejemplo mostrado depende de la cantidad de datos, por ello el primer For Next trabaja de la fila 2 a la fila 4, para extender el uso de este código, se puede usar el código para encontrar la última fila con VBA

Sheets("Lista").Select

ult= cells(rows.count, 1).end(xlup).row 

Donde ult tendría el valor de la última fila de la hoja "Lista", de forma similar se puede proceder con la hoja "Datos" y reemplazar el 6 usado en el segundo for.

Sheets("Datos").Select

ult2= cells(rows.count, 1).end(xlup).row 

 

El archivo con los ejemplos de "Buscar y reemplazar masivo en VBA" se encuentran en el siguiente enlace:  Busqueda y reemplazo masivo VBA

14 comentarios

  1. Este código me sirve bastante ya que en muchos casoss cuando se exportan datos de un sistema, muchas veces los sistemas no aceptan valores como la "ñ" o las tíldes, por lo que al exportarlos estos figuran con caracteres extraños. Mediante este código se pueden corregir.

    Muchas gracias por sus aportes.

  2. Hola, estoy buscando la manera de poder realizar una programación que pueda buscar y reemplazar muchas palabras en muchos documentos. Estos proceden de varias de datos que contienen muchos errores gramaticales y la idea es corregirlos de forma masiva,

    Se trata de buscar una palabra concreta tal y como está mal escrita y sustiturla por otra correctamente escrita. Es una sola palabra o una sencilla cadena de texto muy corta. Hasta el momento realizo las búsquedas y reemplazos uno a uno y en cada documento independiente con la consecuente inversión de tiempo y repetición de operaciones.

    La lista de las palabras a buscar las guardo y actualizo en un documento de dos columnas: A buscar / A reemplazar,

    Me podéis ayudar? Creo que seria crear una macro o un programa pero no lo se hacer.

    gracias

    • Hola, saludos desde Chile.

      Estoy intentando ahora algo similar para corregir direcciones pero solo he logrado reemplazar el error o abreviatura si está en la primera palabra de la dirección.

      Si tuviste éxito, agradeceré me comentes la solución

  3. Muy util para ordenar datos datos tambien se podria incluir un codigo para corregir las letras que esten en Mayúsculas y Minúsculas

  4. Hola necesito ayuda para de alguna forma lograr que en una hoja de excel se elimine solo una celda duplicada que especifique otra celda, por ejemplo digamos que tengo el rango A2:A5 y tengo una serie de materiales:
    1x
    2x
    1x
    4x
    5x
    y tengo una tabla de hubicaciones en el rango c2:E4
    1x 2x 5x
    1x 2x 5x
    1x 4x 5x

    lo que quiero es una forma de buscar los valores de mi rango A2:A5 dentro de mi tabla y elimine solo la primera repeticion.
    Espero haberme explicado y espero que exista alguna solucion a mi problema.

  5. Se puede insertar otro buscarv o buscar dentro de un buscarv?

  6. Buenas tardes

    la formula me busca y reemplaza bien cuando la palabra esta sola en una celda, pero cuando la palabra esta acompañada de mas texto no la encuentra, por ejemplo busco la palabra febrero y si esta sola la encuentra, pero si la palabra esta nomina de febrero no la encuentra.
    me gustaría saber de que otra forma puedo hacer para que encuentre la palabra

  7. Hola amigos, ustedes que son expertos podrían ayudarme con el siguiente caso: tengo un lista de nombres de personas entre otros datos en varias hojas en un solo archivo de Excel y requiero hacer búsquedas de dos o mas nombres. Actualmente debo hacerlo de uno en uno con la función correspondiente de buscar. Hay alguna forma de hacer una búsqueda "masiva"?

    • Hola Richard

      Desde la ventana para tradiconal para buscar, presiona "Opciones >>" luego en "Dentro de" cambia la opción "Hoja" por "Libro".

      Saludos

  8. buen dia. pido ayuda.

    necesito una macro para realizar lo siguiente:
    en una planilla, especificamente en la columna J aparecen en forma ascendente valor.-
    quiero recorrerla toda la columna comenzando desde "J4", comparando que el valor en la celda sea menor-igual a 7,....... y cuando encuentre un valor mayor a 7 se frene, vuelva a la celda anterior, y desde ahi copie todo el rango hasta "A1" (manteniendo el formato de la planilla).... para luego volcarlo automaticamente a un mail ya definido y enviarlo.
    podran ayudarme???.
    muchas gracias
    saludos

  9. Estimados, buen día.

    lo que necesito es un buscador con macro que realice la búsqueda dentro del libro y otro archivo excel diferente, la cual si no encuentra la palabra se está buscando, este arroje un mensaje de (carpeta no entregada).
    necesito realizarlo mediante un botón el cual me despliegue una lista con las personas que estén trabajando en la w/o a buscar.

    En el libro cuento con cada hoja por personal, en donde se ingresan los datos de (componente - w/o - se y fecha), en donde distintos técnicos trabajan en una misma w/o. Para esto se necesita generar un buscador mediante un botón y una celda donde se ingrese la palabra a buscar en todas las Hojas y archivo diferente y como producto se despliegue una lista de todas las personas que estan trabajando en la w/o.

    Saludos.

  10. Buen día,

    Tengo una hoja como base de datos (es un link de Google Drive) que se actualiza conforme la gente lo va llenando.

    Quiero crear una macro donde esta información de la hoja de link se me actualice a una hoja 2 de excel para llevar el control del status de pagos conforme la gente se inscribe al link.

    En otras palabras, actualizar una hoja de datos a otra hoja sin que se mueva ni se repita la información.

  11. Hola una pregunta tengo un archivo con la fecha 01.05.2019 y deseo reemplazar el punto(.) por / es decir que queda 01/05/2019. monte una macro pero al ejecutarla tambien me reemplaza los Punto de los valores. el punto es que deseo una macro para cambiar Punto (.) por diagonal (/) en un rango especificado (no siempre sera el mismo rango) sin que me cambie los valores de otras celdas que no están en el rango

    Me pueden por favor ayudar?

  12. Buenas tardes,

    Necesito realizar una macro en donde se ejecute un buscarV, pero que me traiga todos los atributos de celda origen (Valor, color de fuente, color de fondo. (Tener en cuenta que la matriz de los datos varia de colores y valores a diario).

    estoy ejecutando el siguiente codigo pero solo me trae el valor

    Sub busquedaVertical()
    Dim cont As Long
    Dim ultLinea As Long
    Dim valor As Variant
    Dim nig As Variant
    Dim rango As Variant

    ultLinea = Sheets("Hoja2").Range("A" & Rows.Count).End(xlUp).Row
    Set rango = Sheets("Hoja1").Range("A2:B600")

    For cont = 2 To ultLinea
    nig = Sheets("Hoja2").Cells(cont, 1)
    valor = Application.VLookup(nig, rango, 2, False)

    If IsError(valor) Then
    valor = "no encontrado"

    End If

    Sheets("Hoja2").Cells(cont, 2) = valor

    Next cont

    MsgBox "buscarv ejecutado", vbInformation, "Buscarv"

    End Sub

    De antemano agradezco su ayuda.

Deja una respuesta

Los campos requeridos estan marcados con *.