Страницы: 1
RSS
аналог ВПР в VBA одной строкой
 
Добрый день уважаемые!
Суть проблемы в следующем:

Имеется UserForm с различными элементами. После заполнения данные из UserForm заносятся в соответствующие ячейки последней строки Листа2.
Однако в столбцы C и D необходимо подтянуть данные из столбцов  D и Е Листа3, в которых значение в столбце В соответствует значению в Combobox (FIO).

Вот кусок кода, где вместо ВПР(FIO.value;Лист3!$B$2:$E$10;3 или 4;0) надо вставить данные из столбцов  D и Е Листа3, которые соответствуют значению
Код
 With Sheets("Лист2")
            Dim LastRow As Long
            LastRow = .Cells(Rows.Count, "B").End(xlUp).Row + 1
            .Cells(LastRow, "B").Value = Me.FIO.Value
            '.Cells(LastRow, "C").Value =ВПР(FIO.value;Лист3!$B$2:$E$10;4;0)  
       '.Cells(LastRow, "D").Value =ВПР(FIO.value;Лист3!$B$2:$E$10;3;0)  
            .Cells(LastRow, "E").Value = Me.DTPicker2.Value   
            .Cells(LastRow, "F").Value = Me.DTPicker3.Value   
            .Cells(LastRow, "G").Value = Me.DTPicker3.Value - Me.DTPicker2.Value    
      .......................   
End With 
Подскажите пожалуйста как это можно сделать, если вообще можно?
Изменено: ts-79 - 21.01.2014 13:45:12
 
Запишите вставку формулы макросом. А потом замените на значение.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
как вариант - вызов WorksheetFunction.Lookup
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
WorksheetFunction.Lookup
Vlookup :)
 
точно
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
.Cells(LastRow, "C" ).Value = "=VLOOKUP(FIO.value;Лист3!$B$2:$E$10;4;0) "
 
Бонифайций, тогда уж по всем правилам надо(.Value не будет вычислять формулу, FIO.value - должно быть экранировано)
Код
.Cells(LastRow, "C" ).Formula = "=VLOOKUP(" & FIO.value & ",Лист3!$B$2:$E$10,4,0)"
.Cells(LastRow, "C" ).Value =  .Cells(LastRow, "C" ).Value
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
.Cells(LastRow, "C" ).Formula = "=VLOOKUP(" & FIO.value & ",Лист3!$B$2:$E$10,4,0)"
.Cells(LastRow, "C" ).Value =  .Cells(LastRow, "C" ).Value 
Выдает ошибку #ИМЯ?

Цитата
как вариант - вызов WorksheetFunction.Lookup

Этот вариант думал применить если не получится в одну строчку.
Добавить дополнительных 2 невидимых Textboxа, в которые прописать Application.WorksheetFunction.VLookup. А потом их значения выводить как все другие.
 
У меня никаких ошибок не выдает. Ошибку #ИМЯ! может выдать как раз в том случае, если Вы воспользовались советом Бонифаций и использовали свойство .Value.

Приложите свой пример, в котором эта ошибка появляется.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Приложите свой пример, в котором эта ошибка появляется.
Спасибо за помощь. Решение нашел через Find.

Код
.Cells(LastRow, "C").Value = Sheets("Лист3").Range("B2:B10").Find(FIO.Value).Offset(, 3).Value
.Cells(LastRow, "D").Value = Sheets("Лист3").Range("B2:B10").Find(FIO.Value).Offset(, 2).Value
Код
 
На всякий случаю прикладываю файл.
Изменено: ts-79 - 21.01.2014 13:44:49 (перезалил файл)
Страницы: 1
Читают тему
Наверх