2016-12-13 2 views
2

Сейчас я использую этот тип кода, чтобы посмотреть, что находится в столбце O, чтобы определить, что вводить в столбце N. Поскольку данные являются конфиденциальными, я просто делаю это буквы и цифры здесь. Он отлично работает, но вместо того, чтобы жестко кодировать случаи в коде VBA, я хочу, чтобы он ссылался на таблицу, которая находится во внешней книге, потому что я собираюсь вставить тысячи случаев и значений.VBA vlookup с помощью справочной таблицы Excel во внешней книге

Sub ChangeTest() 
    Dim LastRow As Long 
    Dim i As Long 
     LastRow = Range("O" & Rows.Count).End(xlUp).Row 
     For i = 2 To LastRow 
     Select Case Range("O" & i) 
      Case "A", "B", "C" 
      Range("N" & i) = "1" 
      Case "D","E","F" 
      Range("N" & i) = "2" 
      Case "G","H","I" 
      Range("N" & i) = "3" 
     End Select 
     Next i 
End Sub 

В книге внешней, столбец D будет содержать случаи (A, B, C и т.д.) и столбца C будет иметь номер (1, 2, 3 и т.д.), который должен идти в столбец N в оригинальной книге.

Я не уверен, что код, который мне сейчас нужен, нужно немного отредактировать, чтобы включить справочную таблицу, или если это будет совершенно другим.

+0

Возможно, это может помочь: https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_other/vba-vlookup-of-external-workbook/68df21ca-40bb-4b7c-bc77-a0cff6771d4d – Bookeater

+0

Будет ли внешняя рабочая книга уже открыта? –

+0

Нет, не будет. – Robby

ответ

0

Почему не просто запустить ВПР, как вы название предлагает вместо запуска цикла ?:

Sub ChangeTest() 
Dim LastRow As Long 
Dim Referance_Workbook As Workbook 
Dim Referance_Tab As Worksheet 
Dim Rng As Range 


Set Referance_Workbook = Workbooks.Open("[Referance workbook path]") 
Set Referance_Tab = Referance_Workbook.Sheets("[Referance tab within referance workbook]") 
Referance_Workbook.Close SaveChanges:=False 

LastRow = Range("O" & Rows.Count).End(xlUp).Row 
Set Rng = Range("N2:N" & LastRow) 
Rng.FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-11],'[Source Workbook.xlsx]Sheet1'!C1:C2,2,0),""No in refrence table"")" 


End Sub 

Это делает поиск на колонке А вы ссылаетесь рабочей книги/вкладку и смотрит на результат в колонке B

+0

Я думаю, что внес правильные изменения, но я получаю ошибку «индекс вне диапазона» для значения Set Referance_Tab. Если вкладка называется RData, не должно ли это быть в скобках на этой строке? Как это? 'Set Referance_Tab = Referance_Workbook.Sheets (" [RData] ")' – Robby

+0

Нет, это должно быть 'Set Referance_Tab = Referance_Workbook.Sheets (« RData »)' – Jeremy

+0

@Robby - это то, что работает для вас сейчас (должно быть!) – Jeremy