Я пытаюсь написать код для использования vlookup
, где ссылкой является другой файл. Справочная таблица от ячейки a2
до a300
. Значение поиска — от ячейки G2
до конца столбца. vlookup
нужно сделать в колонке AA
.
Я нашел приведенный ниже код в одном из решений на этом веб-сайте, но понятия не имею, как изменить его в соответствии с моим файлом.
Sub SBEPlannerAdder()
Dim rw As Long, x As Range
Dim extwbk As Workbook, twb As Workbook
Set twb = Workbooks.Open("C:\Users\OUROBOROS\Desktop\30-5-19\vba\VBA\Gents_SW_May'19.xlsb")
Set extwbk = Workbooks.Open("C:\Users\OUROBOROS\Desktop\30-5-19\vba\VBA\1st phase stores.xlsx")
Set x = extwbk.Worksheets("Sheet1").Range("A1:C300")
For rw = 2 To twb.Sheets("Sheet1").Cells(Rows.Count, 25).End(xlUp).Row
twb.Sheets("Sheet1").Cells(rw, 2) = Application.VLookup(twb.Sheets("Sheet1").Cells(rw, 1).Value2, x, 2, False)
Next rw
extwbk.Close savechanges:=False
End Sub
да, так что я знаю, какие клетки рассматривать
Попробуй это. Вам нужно будет настроить имена книг и листов в соответствии с вашими потребностями.
Не уверен, какой вывод вы ожидаете, я только что добавил текстовое сообщение в ячейки вывода в AA.
Sub y()
Dim rw As Long, x As Range, v As Variant
Dim extwbk As Workbook, twb As Workbook
Set twb = ThisWorkbook 'file with lookup values (containing code)
Set extwbk = Workbooks.Open("C:\Users\OUROBOROS\Desktop\30-5-19\vba\VBA\1st phase stores.xlsx") 'file with reference table
Set x = extwbk.Worksheets("Sheet1").Range("A2:A300")
For rw = 2 To twb.Sheets("Sheet1").Cells(Rows.Count, "G").End(xlUp).Row
v = Application.Match(twb.Sheets("Sheet1").Cells(rw, "G").Value2, x, 0)
If IsNumeric(v) Then
twb.Sheets("Sheet1").Cells(rw, "AA").Value = "Found" 'G is in the table
Else
twb.Sheets("Sheet1").Cells(rw, "AA").Value = "Not found" ''G is NOT in the table
End If
Next rw
extwbk.Close savechanges:=False
End Sub
Если файл, содержащий значения поиска, содержит код, вы можете просто использовать Set twb =thisworkbook
.
Он отлично работает, есть ли способ избавиться от пути к файлу для текущей книги?
Спасибо большое, не заметил комментарий
Проблема с кодом, он отображается не во всех ячейках
Нужно больше информации. Если вы повторно запускаете код, вам следует сначала очистить выходные ячейки.
я их каждый раз сбрасываю, может быть проблема с функцией совпадения
Значения в G не должны быть найдены в таблице. Ничего не зная о ваших данных, трудно предоставить более подробную информацию, но проверьте наличие начальных или конечных пробелов.
Могу ли я как-нибудь прикрепить сюда листы Excel?
Не файлы, но вы можете добавить скриншоты к своему вопросу.
прикрепил 2 скрина, спасибо всем за помощь
Боюсь, я ничего не могу по ним сказать - попробуйте выполнить код с помощью F8, чтобы увидеть, что происходит, и добавьте точку останова в разделе не найдено. Где-то в строке он не находит значения в таблице - проверьте также свои ссылки.
Поскольку ваша справочная таблица состоит только из одного столбца, вы просто проверяете наличие значений в G в таблице?