Error 1004 al hacer buscarv macro excel

Estoy con una macro donde tengo 4 buscarv, he replicado todos en función del primero que me funciona perfectamente. El segundo es igual, solo que le pido que me devuelva la 3 columna y así sucesivamente con los otros 2. En el primero no me da error, pero con los otros me sale este error y dice: No se puede obtener la propiedad vlookup de la clase worksheetfunction. ¿Alguna idea de dónde está el problem?
Os pego cómo lo hago (busco el dato en la hoja BBDD y yo me encuentro en Hoja1

For x = 2 to range("A" & Rows.count).end(xlup).row
Cells(x, "I").Value = WorkSheetFunction. Vlookup ((Cells(x, "A"). Value), Sheets("bbdd"). Range("A1:B20000"), 3, 0)

Respuesta

Vaya ejecutando el código paso a paso y vea los valores que traen las variables, y vea si existe la 3a columna de esa manera podría encontrar el error. También si puede compartir una imagen de sus datos donde se busca y la macro que funciona y la que no para que se pueda comparara y darle una idea donde podría estar el problemas

2 respuestas más de otros expertos

Respuesta
1

Supongo que el primer resultado va en la columna H, el segundo en I, luego J y K.

Podría ser así:

Sub test()
  Dim x As Long
  For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
    Cells(x, "H").Value = WorksheetFunction.VLookup((Cells(x, "A"). Value), Sheets("bbdd"). Range("A1:B20000"), 2, 0)
    Cells(x, "I").Value = WorksheetFunction.VLookup((Cells(x, "A").Value), Sheets("bbdd").Range("A1:C20000"), 3, 0)
    Cells(x, "J").Value = WorksheetFunction.VLookup((Cells(x, "A").Value), Sheets("bbdd").Range("A1:D20000"), 4, 0)
    Cells(x, "K").Value = WorksheetFunction.VLookup((Cells(x, "A").Value), Sheets("bbdd").Range("A1:E20000"), 5, 0)
  Next
End Sub

Es decir, el rango a buscar aumenta en C, D  y E; así mismo el número de columna aumenta en 3, 4 y 5.


Otra manera de hacerlo si utilizar un ciclo es de la siguiente:

Sub test2()
  With Range("H2:K" & Range("A" & Rows.Count).End(3).Row)
    .Formula = "=VLOOKUP($A2,bbdd!$A$2:$E$2000,COLUMNS($H$1:I$1),0)"
    .Value = .Value
  End With
End Sub

Muchas gracia por la información, estaba buscando cómo aprender a hacerlo con el With en vez de con un For y ahora ya lo tengo. Gracias!!!

Respuesta
1

El error seguramente sea porque haces referencia a la columna 3 en un rango donde solo hay dos columnas (A Y B).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas