Como hacer una macro de la función buscarv entre 2 libros

quiro hacer una macro de la funcion BUSCARV entre 2 libros, la funcion es "=SI(ESERROR(BUSCARV(E4;'C:\Users\usuario\Desktop\ropa tanya envios\[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!$N:$S;6;FALSO));"0";BUSCARV(E4;'C:\Users\usuario\Desktop\ropa tanya envios\[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!$N:$S;6;FALSO))", la columna donde van los resultados es la columna M hasta la ultima celdade dicha columna, esperando vuestra ayuda os saluda atentamente: ALFREDO

1 respuesta

Respuesta
1

H o l a : Te anexo unas opciones:

En la primera opción el libro puede estar cerrado, entonces la macro lo abre y te pone los resultados de las búsquedas.

Sub PoneResultados()
'Por.Dante Amor
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    ruta = "C:\Users\usuario\Desktop\ropa tanya envios\"
    'ruta = ThisWorkbook.Path & "\"
    arch = "FACTURAS ARTICULOS CLIENTES TANYA.xlsm"
    hoja = "VTA"
    existe = False
    For Each libro In Workbooks
        If libro.Name = arch Then existe = True
    Next
    If existe = False Then
        Set l2 = Workbooks.Open(ruta & arch)
    Else
        Set l2 = Workbooks(arch)
    End If
    Set h2 = l2.Sheets(hoja)
    '
    For i = 4 To h1.Range("E" & Rows.Count).End(xlUp).Row
        Set b = h2.Columns("N").Find(h1.Cells(i, "E"), lookat:=xlWhole)
        If Not b Is Nothing Then
            h1.Cells(i, "M") = h2.Cells(b.Row, "S")
        Else
            h1.Cells(i, "M") = 0
        End If
    Next
    MsgBox "Fin"
End Sub

En la siguiente opción el libro tiene que estar abierto:

Sub Macro1()
'Por.Dante Amor
    With Range("M4:M" & Range("E" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
            "=IF(ISERROR(VLOOKUP(RC[-8],'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE)),""0"",VLOOKUP(RC[-8],'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!C14:C19,6,FALSE))"
        .Value = .Value
    End With
End Sub

En la siguiente opción puedes tener el libro cerrado, solamente revisa que el nombre de la ruta y archivo sean correctos.

Sub Macro2()
'Por.Dante Amor
    'ruta = ThisWorkbook.Path & "\"
    ruta = "C:\Users\usuario\Desktop\ropa tanya envios\"
    arch = "FACTURAS ARTICULOS CLIENTES TANYA.xlsm"
    With Range("M4:M" & Range("E" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-8],'" & ruta & "[" & arch & "]VTA'!C14:C19,6,FALSE)),""0""," & _
                                   "VLOOKUP(RC[-8],'" & ruta & "[" & arch & "]VTA'!C14:C19,6,FALSE))"
        .Value = .Value
    End With
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias anticipadas por tu ayuda, he intentado poner la segunda fórmula adaptada, pero me pone todos a "0" como si no los encontrara, y no entiendo porque, ¿podrías ayudarme?, te envío la macro para que puedas analizarla.

Sub volcado_de_ventas()
'
' volcado_de_ventas Macro
'
'Por.Dante Amor
Workbooks.Open Filename:= _
"C:\Users\usuario\Desktop\ropa tanya envios\FACTURAS ARTICULOS CLIENTES TANYA.xlsm"
Sheets("VTA").Select
Application.ScreenUpdating = False
Windows("HOJA PRECIOS GENERAL REFINITIVO prueba volcado de ventas.xlsm").Activate
Sheets("ARTICULOS").Select
With Range("M3:M" & Range("E" & Rows.Count).End(xlUp).Row)
.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC[-8],'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!N2:S602,6,FALSE)),""0"",VLOOKUP(RC[-8],'[FACTURAS ARTICULOS CLIENTES TANYA.xlsm]VTA'!N2:N602,6,FALSE))"
.Value = .Value
End With
Windows("FACTURAS ARTICULOS CLIENTES TANYA.xlsm").Close
Windows("HOJA PRECIOS GENERAL REFINITIVO prueba volcado de ventas.xlsm").Activate
Sheets("ARTICULOS").Select
MsgBox "VENTAS VOLCADAS EN EL PROGRAMA DE TANYA"
'
End Sub

Atentamente:

ALFREDO

Pero tienes que aplicar las soluciones tal como te las puse. La solución es para lo que pediste. Si cambiaste los datos de lugar y cambiaste la macro, ahora tendría que revisar cómo tienes los datos y revisar tu macro.

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor". Ahí describe exactamente cómo tienes los datos.

Efectivamente al poner los mismos datos que me indicaste funciona a la perfección, pero me gustaría comprenderlo; en vlookup ponesVTA! C14:C19 y no comprendo el porque de ese rango.

Agradecido por tu ayuda, saludos:

ALFREDO

perdona que te moleste pero tengo un problemilla con la formula, te explico; en el rango a buscar en !VTA N$:S$tengo varias filas con el mismo nombre a buscar, y quisiera que me sumara los importes de los que tienen el mismo nombre y volcarlo en el original que solo hay un nombre con el articulo EN M3:M" & Range("E" & Rows.Count).End(xlUp).Row).

Esperando tus prontas noticias, te saluda atentamente:

Alfredo

H o l a : te explico lo que significa VTA! C14:C19

La letra C se refiere a Column, Entonces el rango va desde la columna 14 hasta la columna 19.

La columna 14 es la letra N y la columna 19 es la S

Como ya comentaste la solución funciona correctamente. Con gusto te ayudo con todas tus peticiones, valora esta respuesta y crea una nueva pregunta, ahí explicas con ejemplos lo que quieres buscar y sumar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas