2016-08-24 6 views
0

Я пытаюсь вставить значение Vlookup в первую пустую ячейку/строку. Вот мой кодVBA: Как вставить значение Vlookup в первую пустую ячейку/строку

Dim lookfor As Range 
Dim searchrange As Range 
Dim book1 As Workbook 
Dim book2 As Workbook 
Dim book2name As String 

book2name = "Micros_export.xlsm" 

Dim book2namepath As String 

book2namepath = "C:\Users\pkechichian\Documents\Revamp\Micros_export.xlsm" 

Set book1 = ThisWorkbook 
Set book2 = Workbooks.Open(book2namepath) 
Set lookfor = book1.Sheets("Actual").Cells(2, 4) 
Set searchrange = book2.Sheets("Accpac").Range("E:H") 

lookfor.Offset(2, 0).End(xlDown).Value = Application.VLookup(lookfor, searchrange, 3, False) 

Спасибо за помощь и извините за форматирование!

ответ

0

отредактирован после OP пояснений

Option Explicit 

Sub main() 
    Dim book2namepath As String 
    Dim searchrange As Range 

    book2namepath = "C:\Users\pkechichian\Documents\Revamp\Micros_export.xlsm" 
    Set searchrange = Workbooks.Open(book2namepath).Sheets("Accpac").Range("E:H") '<-- set range directly at workbook opening 
    With ThisWorkbook.Sheets("Actual") '<--| refer to "destination" sheet 
     .Cells(.Rows.Count, "D").End(xlUp).Offset(1).value = Application.VLookup(.Cells(2, 4).value, searchrange, 3, False) '<--| write lookup value in first empty cell below in column "D" 
    End With 
    ActiveWorkbook.Close False '<--| close opened workbook without saving changes 
End Sub 
+0

Спасибо за редактирование, но она по-прежнему возвращает тот же результат. Вместо того, чтобы применять rows.count ко всему столбцу «D», можно было бы применить его только в диапазоне (в данном случае «D4: D34»). Лист состоит из 4 таблиц, из которых 2 сначала пусты (где мне нужно вводить значения), а два последних заполнены формулами, и я думаю, что это проблема. Я также могу создать новый лист, где я буду использовать вашу формулу, а затем перейду на этот лист, но я уверен, что лучший способ существует :) Я буду уверен, что улучшу свои навыки публикации, извините за это! Еще раз спасибо ! –

+0

Что такое «тот же результат»? Подробно описывайте как исходные данные, так и соответствующие результаты. – user3598756

+0

Данные по-прежнему вставлены в «D143» вместо «D4» –

0

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

The value should be inserted in "D4" This is where the value is inserted

+0

, учитывая вашу структуру данных, код может быть проще: см. Отредактированный ответ и, пожалуйста, отметьте его как принятый, если он выполнит ваш вопрос. BTW, чтобы ответить на любой ответ, вы должны добавить комментарии прямо под ним, а для улучшения вашего вопроса (например: для добавления скриншота или другого) вы должны сами изменить свой вопрос. В любом случае никогда не публикуйте новый ответ, если вы не отправляете ответ на ваш вопрос! – user3598756

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