Попытка сделать макрос, который будет принимать ввод (13-разрядное число) из ячеек A7, A8, A9 и т. Д., Пока не будет достигнута пустая ячейка, и запустите vlookup с этим против другой книги.VLookup В другой рабочей книге
Однако, я просто получаю ошибку # N/A, и я не могу понять почему.
Мой текущий код:
Sub getData()
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlManual
Dim wb As Workbook, src As Workbook
Dim srcRange As Range
Dim InputString
Dim OutputString
Dim i As Long
Set wb = ActiveWorkbook
Set src = Workbooks.Open("D:\Files\test1.csv", True, True)
Set srcRange = src.Sheets(1).Range("A1:H1").End(xlDown)
i = 7
Do While wb.ActiveSheet.Cells(i, 1) <> ""
InputString = wb.Worksheets("Sheet 1").Cells(i, 1)
OutputString = Application.VLookup(InputString, srcRange, 3, False)
wb.Worksheets("Sheet 1").Cells(i, 2) = OutputString
i = i + 1
Loop
src.Close (False)
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlAutomatic
End Sub
Я думаю, что стоит отметить, что ссылка, которую я смотрю вверх («InputString») определяется как пользовательский формат # 0 в файле «Src». Я действительно не знаю, слишком ли это имеет значение, оно все равно должно быть целым?
Кроме того, «OutputString» может быть либо цифрами, либо текстом, поэтому я целенаправленно разрешаю ему неопределенное. Я попытался определить его как «Вариант», «Строка» и «Целое», но это ничего не изменило.
Спасибо.
Ваш 'VLookup' пытается получить доступ к столбцу 3 диапазона, который вы установили, чтобы быть только одной шириной столбца. Возможно, измените '' A1: A8 "' на '' A1: C8 "'? – YowE3K
@ YowE3K - извините, это была ошибка с моей стороны при использовании моей тестовой таблицы. Я отредактировал, чтобы исправить. Теперь он устанавливает начальный диапазон как верхний ряд. –
(a) Я предполагаю, что вы проверили, что ячейки в столбце A активного листа не являются пробелами, по крайней мере, для диапазона, который вы пытаетесь обработать на листе «Лист 1». (Например, если активный лист не имеет ничего в ячейке A7, цикл не будет обрабатывать все, что было в ячейке A7 «Лист 1», что может оставить «# N/A» в ячейке B7 «Лист 1», из какого-то предыдущего запуска макроса.) (б) Прошли ли вы через код, чтобы узнать, что задано значение 'InputString'? (c) Вы проверили, что файл csv содержит значения, которые вы ищете? – YowE3K