Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 09:46   #1
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию Формула ВПР в макросе...

Помогите, пожалуйста, разобраться с формулой!
Есть код, который вставляет формулу ВПР в диапазон ячеек, которая подтягивает значение в 1 таблицу из другой.

Проблема в том, что формула в ячейку помещается, но отображает #ИМЯ?, а вычисленное значение показывает, только если активизировать курсор в ячейке... А должно быть сразу значение...
Что я сделал не так? Как активизировать формулу, чтобы сразу было значение?

И еще одна проблема. Если в макросе записывать обычную конструкцию для ВПР, чтобы не выскакивало #Н/Д, а именно:
ЕСЛИ(ЕНД(ВПР(RC[-1],Лист1!C[-1]:C,2,0)),"",ВПР(RC[-1],Лист1!C[-1]:C,2,0))
то макрос вообще ошибку выдает... Как его перебороть?
Вложения
Тип файла: rar Вид продукта.rar (6.8 Кб, 66 просмотров)
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 08:24   #2
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Товарищи, ну помогите ктоньть!!! Оч надо!!!!
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 09:54   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно, например, так:
Код:
Sub Вид()
    Dim Cell As Range: Application.ScreenUpdating = False
    For Each Cell In Sheets("Лист2").[B2:B5]
        Cell.FormulaR1C1 = "=VLOOKUP(RC[-1],Лист1!R2C1:R4C2,2,0)"
        If IsError(Cell) Then Cell = ""
    Next
End Sub
Пример во вложении. Запустите макрос "Вид".
Обратите внимание, что в макросе специально установлен диапазон не "B2:B4", а "B2:B5". Это для того, чтобы показать на примере, что при возникновении ошибки при применении функции, ячейка очищается.
Вложения
Тип файла: rar Вид продукта_2.rar (8.2 Кб, 210 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 10:08   #4
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Отлично, спасибо SAS888, то, что надо!!!

Хотя глюка с моим первоначальным вариантом если честно все равно не пойму... Другие формулы вносимые таким образом работают, а эта - нет. Даже если вместо ВПР ставить VLOOKUP ...
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 10:21   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Хотя глюка с моим первоначальным вариантом если честно все равно не пойму
Если воспользоваться Вашим вариантом, то во-первых, нужно чуть-чуть подправить код, а именно:
Код:
Sub Вид()
    With ThisWorkbook.Worksheets("Лист2")
        .Range(.Cells(2, 2), .Cells(4, 2)).FormulaR1C1 = "=VLOOKUP(RC[-1],Лист1!R2C1:R4C2,2,0)"
    End With
End Sub
Во-вторых, все равно, потребуется цикл, в котором нужно будет просматривать ячейки диапазона и проверять их на #Н/Д.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 10:55   #6
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

А в коде формулы в таблице-источнике надо указывать конкретный диапазон по строкам или можно просто относительные столбцы?
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 11:01   #7
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

или хотя бы абсолютные столбцы?
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 11:13   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
А в коде формулы в таблице-источнике надо указывать конкретный диапазон по строкам или можно просто относительные столбцы?
Цитата:
или хотя бы абсолютные столбцы?
Как Вам угодно. У меня в примере (обратите внимание на квадратные скобки в формуле формата R1C1) сделано так, что искомое значение задается относительным адресом (RC[-1] - это та же строка, столбец со смещением -1), а диапазон таблицы с данными задан абсолютно (Лист1!R2C1:R4C2, т.е. на листе 1 диапазон "B2:D4"). Так сделано потому, что если вдруг Вам вздумается "растягивать" полученную макросом формулу ниже по столбцу, то ничего не нарушится. Т.е. искомое данное будет в той же строке в столбце слева, а адрес таблицы для поиска будет оставаться неизменным. Вы же, сделайте так, как Вам требуется.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.08.2009, 12:20   #9
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Нет, SAS888, вопрос немного не в этом. По ссылкам все понятно...

Я не пойму, почему если в таблице указать только столбцы, например "RC1:RC2", то макрос не срабатывает. А если конкретный диапазон, то все нормально...
А мне нужно, чтобы если в таблицу-источник, из которой тянутся данные, будут добавлены еще новые данные, то они не засчитаются в таблице, куда помещаются данные (диапазон-то старый).

В обычной формуле ВПР это можно решить сразу, указав в таблице-источнике просто столбцы "A:B" например.

Возможно это как-то решить?
Иванов_ДМ вне форума Ответить с цитированием
Старый 20.08.2009, 12:24   #10
Иванов_ДМ
Пользователь
 
Регистрация: 17.02.2009
Сообщений: 96
По умолчанию

Вот пример во вложении как макрос не срабатывает
Вложения
Тип файла: rar Вид продукта_3.rar (7.0 Кб, 52 просмотров)
Иванов_ДМ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли формула типа ВПР или ГПР работающая с несколькими условиями? Zhiltsov Microsoft Office Excel 11 20.06.2016 16:45
ВПР наоборот Python Microsoft Office Excel 6 11.04.2009 00:08
формула =ВПР(Наименование;ЦеныЗаМетр;2)*Длина Deok Microsoft Office Excel 7 20.12.2008 05:35
Нужен ВПР olimpus Microsoft Office Excel 6 13.11.2008 18:28
Функция ВПР Pilot Microsoft Office Excel 3 21.09.2008 07:26