(VBA) Problema con función VLOOKUP
Publicado por Fernanda (1 intervención) el 29/03/2021 05:34:03
Hola a tod@s! Espero que se encuentren muy bien :D
Quería pedirles un poco de orientación con un código en el que estoy trabajando. Se trata de una macro que, a través de un botón (ubicado en un Libro Reporte), llama a un archivo de excel externo con datos normalizados, y la finalidad del código es hacer que los datos de este archivo se traspasen a una hoja en específico del Libro Reporte con datos determinados por unos parámetros que son buscados con VLOOKUP (los cuales coloqué en otra hoja).
El problema que se me presenta con la función es que, si bien comienza reconociendo bien un primer parámetro, después reconoce los siguientes bajo la misma asignación (cuando en realidad, debería decir #N/A). Por ejemplo, en el traspaso pasa lo siguiente:
Dato 1 -> No reconocido, se traspasa en blanco
Dato 2 -> No reconocido, tampoco se traspasa
Dato 3 -> Correctamente reconocido, lo traspasa con los datos que corresponden
Dato 4 -> Lo reconoce con los mismos datos que tiene el de arriba, cuando eso no debería ser porque este dato no está en los parámetros originales.
Les adjunto el código a continuación. Muchas gracias de antemano a tod@s!
Quería pedirles un poco de orientación con un código en el que estoy trabajando. Se trata de una macro que, a través de un botón (ubicado en un Libro Reporte), llama a un archivo de excel externo con datos normalizados, y la finalidad del código es hacer que los datos de este archivo se traspasen a una hoja en específico del Libro Reporte con datos determinados por unos parámetros que son buscados con VLOOKUP (los cuales coloqué en otra hoja).
El problema que se me presenta con la función es que, si bien comienza reconociendo bien un primer parámetro, después reconoce los siguientes bajo la misma asignación (cuando en realidad, debería decir #N/A). Por ejemplo, en el traspaso pasa lo siguiente:
Dato 1 -> No reconocido, se traspasa en blanco
Dato 2 -> No reconocido, tampoco se traspasa
Dato 3 -> Correctamente reconocido, lo traspasa con los datos que corresponden
Dato 4 -> Lo reconoce con los mismos datos que tiene el de arriba, cuando eso no debería ser porque este dato no está en los parámetros originales.
Les adjunto el código a continuación. Muchas gracias de antemano a tod@s!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Sub TraspasarArchivo()
Dim LibroReporte As Workbook
Dim Origen As Workbook
Dim Archivo As String
Dim Fila As String
Dim FilaEscribir As String
Dim Valor As String
Dim Dato1 As String
Dim Dato2 As String
Dim Dato3 As String
Set LibroReporte = ThisWorkbook
Archivo = Application.GetOpenFilename
Set Origen = Workbooks.Open(Archivo)
If Archivo <> "False" Then
Fila = 2
Origen.Activate
Do While Range("E" & Fila).Value <> ""
With LibroReporte.Worksheets("Traspaso")
If .Range("C2").Value = "" Then
FilaEscribir = 2
Else
FilaEscribir = .Range("C1").End(xlDown).Row + 1
End If
Valor = Origen.Worksheets(1).Range("E" & Fila).Value
On Error Resume Next
Dato1 = Application.WorksheetFunction.VLookup(Valor, LibroReporte.Worksheets("Parametros").Range("A:B"), 2, False)
On Error GoTo 0
On Error Resume Next
Dato2 = Application.WorksheetFunction.VLookup(Valor, LibroReporte.Worksheets("Parametros").Range("A:D"), 4, False)
On Error GoTo 0
On Error Resume Next
Dato3 = Application.WorksheetFunction.VLookup(Valor, LibroReporte.Worksheets("Parametros").Range("A:E"), 5, False)
On Error GoTo 0
.Range("A" & FilaEscribir).Value = Valor
.Range("B" & FilaEscribir).Value = Dato1
.Range("C" & FilaEscribir).Value = Dato2
.Range("D" & FilaEscribir).Value = Dato3
End With
Fila = Fila + 1
Loop
End If
Origen.Close
End Sub
Valora esta pregunta


0