运行时错误“1004” – 对于VLOOKUP

我试图build立一些双VlookUp的VBA代码,但我得到了运行时错误“1004”:应用程序定义或对象定义的错误。 这个目标是:

我从客户那里收到一个.csv文件,其中包括: Login Name eMailCard NumberHost Login等。我将.csv文件加载到工作表“数据”中,然后运行一个查找程序将数据复制到工作表“用户”。 由于客户永远不会以相同的顺序构build.csv文件,因此我无法创build具有固定列号的vlookup以复制到工作表“用户”。 我正在使用的代码:

 Sub browseFileTest() Dim desPathName As Variant Dim DestCell As Range Dim iemail As Integer Dim PosEmail As Integer Dim icard As Integer Dim Poscard As Integer Dim ihost As Integer Dim Poshost As Integer Dim iemailD As Integer Dim PosEmailD As Integer Dim icardD As Integer Dim PoscardD As Integer Dim ihostD As Integer Dim PoshostD As Integer 'Import file to worksheet Data desPathName = Application.GetOpenFilename(fileFilter:="Excel Files (*.*), *.*", Title:="Please select a file") If desPathName = False Then MsgBox "Stopping because you did not select a file. Reselect a destination file through the menu" Exit Sub Else With Sheets("Data").QueryTables.Add(Connection:= _ "TEXT;" & desPathName, Destination:=Sheets("Data").Range("$A$1")) .Name = "users" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = True .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With 'Find cells position to 1º Vlookup For iemail = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, iemail), "Email") Then PosEmail = iemail - 1 End If Next For icard = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, icard), "CardNumber") Then Poscard = icard - 1 End If Next For ihost = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, ihost), "HostLogin") Then Poshost = ihost - 1 End If Next Sheets("Data").Select ' Find cells position to 2ª Vlookup For iemailD = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, iemailD), "Email") Then PosEmailD = iemailD - 1 End If Next For icardD = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, icardD), "CardNumber") Then PoscardD = icardD - 1 End If Next For ihostD = 1 To Cells(1, 1).End(xlToRight).Column If InStr(Cells(1, ihostD), "HostLogin") Then PoshostD = ihostD - 1 End If Next ' Copy cells from Worksheet Data to WorkSheet Users **With Sheets("Users").Range("A2", Sheets("Users").Cells(Rows.Count, "A").End(xlUp)) .Offset(, PosEmail).Formula = "=VLOOKUP(A" & .Row & ",'Data'!$A:$I,(,""" & PosEmailD & """ ),FALSE)"** .Offset(, 1).Value = .Offset(, 1).Value End With End If End Sub 

你认为这是可能的吗?

看来问题出在VLOOKUP的语法上,应该是:

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

特别是在构buildcol_index_num参数时。 于是

…:$ I,“&PosEmailD&”,FA …

而不是

`…:$ I,(,“”“&PosEmailD&”“”),FA …

似乎工作。

(两双双引号,一对括号和一个逗号剩余)。