VBA Vlookup дает N / A, но обычный Vlookup дает правильный результат

У меня есть код VBA, который при запуске возвращает N / A, но если я делаю обычный Vlookup в ячейках, он возвращает правильную информацию.

=VLOOKUP(A6,'[AR Aging Detail Report as of 06-26-2017.xlsx]Sheet1'!$H:$V,5,FALSE) 

Это обычный Vlookup, который работает в ячейках. У меня есть этот код, который возвращает только N / A для всех ячеек. Я могу опубликовать полный код, но это то, что имеет значение. xlWS и xlWB2 определены ранее как соответствующие книги.

 xlWS.Activate With xlWS For i = 2 To rCount sFormula = Application.VLookup(Range("A" & i), xlWB2.Sheets(1).Range("H:V"), 5, False) 

Что здесь может быть не так? Vlookup выглядит одинаково.

Добавление полного кода для контекста. Сначала он находит последний файл с именем «AR Aging *» как имя и присваивает его xlWB2. Это основная часть кода. Затем я пытаюсь запустить Vlookup в каждой строке и поместить возвращаемое значение в столбец «O» xlWB.

  'Specify the path to the folder MyPath = "C:\Users\TheAgency\Documents\test" 'Make sure that the path ends in a backslash If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\" 'Get the first Excel file from the folder MyFile = Dir(MyPath & "AR Aging*.xlsx", vbNormal) 'If no files were found, exit the sub If Len(MyFile) = 0 Then MsgBox "No files were found...", vbExclamation Exit Sub End If 'Loop through each Excel file in the folder Do While Len(MyFile) > 0 'Assign the date/time of the current file to a variable LMD = FileDateTime(MyPath & MyFile) 'If the date/time of the current file is greater than the latest 'recorded date, assign its filename and date/time to variables If LMD > LatestDate Then LatestFile = MyFile LatestDate = LMD End If 'Get the next Excel file from the folder MyFile = Dir Loop 'Open the latest file Set xlWB2 = Workbooks.Open(MyPath & LatestFile, True, True) On Error Resume Next ' test if excel is already running Set xlApp = GetObject(, "Excel.Application") On Error GoTo 0 If Err.Number <> 0 Then ' Excel is not running ' so create an object Set xlApp = CreateObject("Excel.Application") Else ' flag. excel is already running before we execute this code bolIsExcelRunning = True End If xlApp.Visible = True Set xlWB = xlApp.Workbooks.Open(WB_PATH & "hdremittance.csv") Set xlWS = xlWB.Sheets("hdremittance") Set xlWS2 = xlWB2.Sheets(1) xlSheetName = xlWS2.Name rCount = xlWS.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count - 1 Debug.Print "rCount : " & rCount ' rCount2: 6 Months Row Count On Error Resume Next rCount2 = xlWS2.Range("D:D").Cells.SpecialCells(xlCellTypeAllFormatConditions).Count - 1 Debug.Print "rCount2 : " & rCount2 Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Sheet2" Sheets.Add(after:=Sheets(Sheets.Count)).Name = "returns" Sheets.Add(after:=Sheets(Sheets.Count)).Name = ".com" Sheets.Add(after:=Sheets(Sheets.Count)).Name = "Shortage" Sheets.Add(after:=Sheets(Sheets.Count)).Name = "No Store" xlWS.Activate With xlWS For i = 2 To rCount sFormula = Application.VLookup(.Range("A" & i), xlWB2.Sheets(1).Range("A:J"), 3, True) rFormula = Application.VLookup(.Range("A" & i), xlWB2.Sheets(1).Range("A:J"), 2, False) Inv = Application.VLookup(.Range("A" & i), xlWB2.Sheets(1).Range("A:V"), 6, False) Debug.Print sFormula .Range("O" & i).Value = sFormula .Range("R" & i).Value = rFormula .Range("S" & i).Value = "Wire Transfer" .Range("T" & i).Value = "1200" .Range("U" & i).Value = "4699" .Range("V" & i).Value = "1100" .Range("X" & i).Value = Inv DoEvents Next End With 

Возможно, ваша ссылка на Таблицы (1) неверна. Я перестроил вашу процедуру и обнаружил, что ошибка 2042 (# N / A) возвращается, если нет совпадения. Ваша формула ясно показывает, что вы имеете в виду «Лист1», но ваш код указывает «Листы» (1), что необязательно может быть одним и тем же. Замените «Листы (1)» на «Листы (« Лист1 ») и повторите попытку.

Давайте будем гением компьютера.