2017-02-07 3 views
0

Я новичок в VBA - я пытаюсь написать функцию Vlookup в Excel, чтобы ссылаться на lookup_value как диапазон значений. Я сохранил свои значения в диапазоне под названием lookup_range, однако я получаю N/A, когда я вывожу значение vlookup для ячеек.Как написать lookup_value в vlookup VBA как диапазон

Я искал по всему Интернету, однако я не вижу решения по моим вопросам.

Sub Vlookup_values() 

    Dim Vlkp_cell, n As Double 
    Dim Search_range, row_end, col_end As Double 

    Sheets("Movement").Activate 
    Range("A1").End(xlDown).Select 
    Vlkp_cell = ActiveCell.Row 

    ReDim Lookup_range(Vlkp_cell) As String 
    n = 0 
    Range("A1").Select 
    For n = 1 To Vlkp_cell 
     ActiveCell.Offset(1, 0).Select 
     Lookup_range(n) = ActiveCell.Value 
     ActiveCell.Offset(0, 9).Value = Lookup_range(n) 
    Next n 

    Sheets("Mapping").Activate 
    Range("A1").End(xlDown).Select 
    row_end = ActiveCell.Row 

    Range("A1").End(xlToRight).Select 
    col_end = ActiveCell.Column 

    Range(Cells(1, 1), Cells(row_end, col_end)).Name = "Search_range" 
    Range("Search_Range").Select 

    Sheets("Movement").Activate 
    Range("A1").Select 
    ActiveCell.Offset(0, 1).Select 
    n = 0 
    For n = 1 To Vlkp_cell 

     ActiveCell.Offset(1, 0).Select 
     ActiveCell.Value = Application.VLookup(Lookup_range(n), Search_range, 2, False) 

    Next n 


End Sub 

ответ

0

Если бы я был в состоянии понять, что вы пытаетесь добиться от вашего кода, попробуйте код ниже:

Option Explicit 

Sub Vlookup_values() 

    Dim Vlkp_cell As Long, n As Long 
    Dim Search_range As Range, row_end As Long, col_end As Long 

    With Sheets("Mapping") 
     row_end = .Range("A1").End(xlDown).Row 
     col_end = .Range("A1").End(xlToRight).Column 

     Set Search_range = .Range(.Cells(1, 1), .Cells(row_end, col_end)) ' <-- set the Range for the VLookup 
    End With 

    With Sheets("Movement") 
     Vlkp_cell = .Range("A1").End(xlDown).Row 

     For n = 1 To Vlkp_cell 
      .Range("A" & n).Offset(0, 9).Value = .Range("A" & n).Value ' <-- not sure why you need the values copied 9 column to the right ? 
      .Range("B" & n).Value = Application.VLookup(.Range("A" & n).Value, Search_range, 2, False) 
     Next n 
    End With 

End Sub 
+0

@ ifeelcrazy123 вы протестировали код в моем ответе? –

+0

Большое вам спасибо. Это сработало! (Извините за задержку с ответом). FYI, мне нужны значения 9 столбцов справа, поскольку предыдущие 8 заполнены другими данными, которые мне нужно будет сравнить и представить в финансовую систему позже. Спасибо! – ifeelcrazy123

 Смежные вопросы

  • Нет связанных вопросов^_^