Necesito una fórmula buscarv combinada que solo rellene campos vacíos del resto de columnas

Tengo que fusionar varios archivos de excel en 1. Es una base de datos en la que a través del dni tengo que ir rellenando el resto de campos, (mail, calle, telf...) pero solo los que estén vacíos. Si un campo esta ya relleno quiero que lo respete. O añadiendo personas nuevas si no estuvieran en el archivo inicial.

¿Y se puede hacer un buscar v de varios archivos a la vez? Tengo que fusionar 20 archivos entre si y que vaya quitando los duplicados.

Hice un cruce parecido hace poco pero tuve que hacer miles de fórmulas y quiero saber si es posible algo más rápido.

No se si sera mejor excel o access, a mi me gusta más con excel y lo controlo más.

Respuesta
2

H o l a:

Podría resolverse con una macro. Lo que haría la macro es revisar todos los archivos y actualizar el archivo "inicial".

Para crear la macro necesito que me envíes 3 archivos.

El archivo "inicial", la hoja1 con algunos DNI y algunos datos completados. Los datos que están pendientes por llenar los marcas de amarillo.

2 archivos de excel con algunos DNI, unos nuevos, otros duplicados y otros que existan en el archivo "inicial"

También en el archivo "inicial", pero en la hoja2, me pones el resultado que esperas después de terminado el proceso.

IMPORTANTE!

¿Todos tus archivos tienen la misma estructura de columnas?

¿En cuál hoja de los archivos se tiene que hacer la búsqueda?

Los archivos que me envíes deberán contener información real de la estructura, es decir, si tienen encabezados, si los datos empiezan en la fila 5, si el DNI está en la columna D, en fin, los archivos deberán estar apegados a la realidad, ya que la macro funcionara de acuerdo a la información que me envíes.


Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Irene Cano” y el título de esta pregunta.

S a l u d o s . D a n t e   A m o r

Te anexo la macro

Sub ActualizarDatos()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.StatusBar = False
    '
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(1)
    ruta = l1.Path & "\"
    '
    arch = Dir(ruta & "*.xls*")
    n = 0
    Do While arch <> ""
        If arch <> l1.Name Then
            n = n + 1
            Application.StatusBar = "Procesando archivo: " & n
            Set l2 = Workbooks.Open(ruta & arch, ReadOnly:=True)
            Set h2 = l2.Sheets(1)
            For i = 2 To h2.Range("B" & Rows.Count).End(xlUp).Row
                Set b = h1.Columns("B:B").Find(h2.Cells(i, "B"), lookat:=xlWhole)
                If Not b Is Nothing Then
                    For j = Columns("C").Column To Columns("R").Column
                        If h1.Cells(b.Row, j) = "" Then
                            h1.Cells(b.Row, j) = h2.Cells(i, j)
                        End If
                    Next
                Else
                    u1 = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
                    h2.Rows(i).Copy h1.Rows(u1)
                End If
            Next
            l2.Close
        End If
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    Application.StatusBar = False
    MsgBox "Se actualizaron " & n & " Archivos", vbInformation, "ACTUALIZACIÓN TERMINADA"
End Sub

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas