Parámetros para usar el find en Vba

Para Dante AMOR

Que Tal Dante ¿cómo estas?

En días pasados proporcionaste una respuesta muy interesante y la verdad confieso me llamo mucho la atención y quise entenderle pero hubo una línea donde de plano no entendí, ¿razón por la que acudo a ti y sino es mucha molestia me la pudieras descifrar de favor?

La línea en específica donde no entiendo es así también te adjunto la macro completa o el link de la pregunta, Como buscar datos y si hay duplicados concatenarlos separados con / con VBA, una explkicacion a tu código /macro no me caería nada mal, Gracias

Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)

1 respuesta

Respuesta
2

Para ponerte en contexto, lo que debe hacer la macro es pasar los datos de la hoja1 a la hoja2, pero en la hoja2, si existen duplicados, se deberán concatenar un par de columnas. Aquí el ciclo de la macro:

    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h2.Columns("A").Find(h1.Cells(i, "A"), lookat:=xlWhole)
        If Not b Is Nothing Then
            h2.Cells(b.Row, "B") = h2.Cells(b.Row, "B") & " / " & h1.Cells(i, "B")
            h2.Cells(b.Row, "C") = h2.Cells(b.Row, "C") & " / " & h1.Cells(i, "C")
        Else
            u2 = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
            h2.Cells(u2, "A") = h1.Cells(i, "A")
            h2.Cells(u2, "B") = h1.Cells(i, "B")
            h2.Cells(u2, "C") = h1.Cells(i, "C")
        End If
    Next

El ciclo va desde la fila 2 y hasta la última fila con datos de la hoja1. El contador de filas se almacena en la variable i

Entonces, toma el primer dato de la fila 2 y columna A = h1. Cells(i, "A") y lo busca en la hoja2, columna A, pero además busca una coincidencia exacta, para ello se utiliza el parámetro xlWhole. El resultado de la búsqueda se almacena en el objeto b

Si el objeto b está vacío, entonces no encontró el dato. Cuando no encuentra el dato, entonces da de alta un registro nuevo.

Si el objeto b no está vacío, significa que encontró el dato. Cuando ya existe el registro entonces empieza a concatenar los datos separados por una diagonal.

Repite los pasos para cada registro de la hoja1


.

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

.

Avísame cualquier duda

.

a ver si capté o sea que la primera búsquedaseria asi

Encuentra o busca A2 de la hoja1 , busca la coincidencia exacta o todo busca en columna"A"  en la hoja 2 y por lo tanto dará nada, por lo tanto es falso y si es falso se agregara en automático el registro por lo que en la segunda búsqueda lo encontrará cierto?

una vez que da de alta el registro vuelve a entrar al if?

Es correcto, la primera vez es falso, entonces lo agrega. Para el segundo registro, vuelve a preguntar si existe, si lo encuentra, entonces concatena; si no existe, entonces crea un nuevo registro :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas