powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как написать в VBA функцию аналог ВПР?
18 сообщений из 18, страница 1 из 1
Как написать в VBA функцию аналог ВПР?
    #33103109
Уважаемые собеседники,
У меня возникла такая проблема: надо прописать в VBA функцию ВПР (или ГПР), а как не представляю.
Кстати, может кто даст ссылочку, если таковая имеется, где можно посмотреть VBA-аналоги функций Excel?

Заранее очень благодарен.

С уважением,
Слобожанин.
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33103333
... кажется таки нашёл способ.
Надо перед наименованием функции в английском варианте, поставить "Application.". Например:

Function ВПРо(искомое_значение, таблица, номер_столбца, интервальный_просмотр) 'As Boolean


ВПРо = Application.VLookup(искомое_значение, таблица, номер_столбца, интервальный_просмотр)
End Function

И всё же, полагаю это наиболее затратный способ. Может кто подскажет другой способ, если есть?

С уважением,
Слобожанин.
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33120826
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы не написали аналог стандартной функции рабочего листа =ВПР() а просто-напросто использовали её в своей пользовательской функции, так как Application.VLookup не что иное, как "сокращённый" вариант Application.WorksheetFunction.Vlookup
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33180699
batiq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Найди в папке с Офисом файл funcs.xls
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33181084
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот и топик из которого был выдернут предыдущий совет : http://bbs.vbstreets.ru/viewtopic.php?t=17872

P.S. Для того, чтобы получить результат аналогичный тому, что возвратит стандартная функция рабочего листа =ВПР() если ввести её в ячейку, не обязательно использовать :
Application.Vlookup
WorksheetFunction.Vlookup
Application.WorksheetFunction.Vlookup
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33181287
Фотография talgat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно использовать "поиск" хорошо описанный на данном форуме
и взяти е данных в соседнем столбце
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #33181498
pashulka.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно конечно использовать и .Find, хотя я подразумевал совершенно другой вариант.
P.S. Ради интереса сравните количество строк в Вашем коде с использованием .Find и .WorksheetFunction
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как написать в VBA функцию аналог ВПР?
    #34525408
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никто не пробовал делать собственный ВПР работающий с двумя параметрами... т.е. макросом.. чтоб без массива..?
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34525487
Фотография klen_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я делаю так
первая часть кода запоминает значения в массив из Листа1, например, Ф.И.О
вторая часть кода читает второй лист и ищет соответствие в массиве
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34525600
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Granata005А никто не пробовал делать собственный ВПР работающий с двумя параметрами... т.е. макросом.. чтоб без массива..?

Что значит без массива?
Если без {...}, то =Суммпроизв((A1:A100=a)*(B1:B100=b)*C1:C100)

В макросе
Код: plaintext
Evaluate("SUMPRODUCT((A1:A100=a)*(B1:B100=b)*C1:C100)")
По моему так
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34525760
Granata005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, именно без {...}

Я туплю ужасно, но как ей пользоваться?

К примеру в таком случае:

устовие1 устовие2 сумма
а 1 210
б 2 796
с 3 637

найти сумму с двумя условиями
б 2 796

чтоб без добавления индексного столбца... :-(
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34526048
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Granata005Да, именно без {...}

Я туплю ужасно, но как ей пользоваться?

К примеру в таком случае:

устовие1 устовие2 сумма
а 1 210
б 2 796
с 3 637

найти сумму с двумя условиями
б 2 796

чтоб без добавления индексного столбца... :-(

Если в третьем столбце суммы поставишь, то всё получится, а то в твоём файле текст в третьем столбце, а стекстом уже сложней
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34526117
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=ЕСЛИ(СУММПРОИЗВ(($A$1:$A$99=D1)*($B$1:$B$99=E1));ИНДЕКС($C$1:$C$99;СУММПРОИЗВ(($A$1:$A$99=D1)*($B$1:$B$99=E1)*СТРОКА($C$1:$C$99)));0)

Формула для выбора текстового значения по двум условиям, только длинно получилось, но сейчас нет времени думать!
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #34531471
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
http://www.sql.ru/forum/actualthread.aspx?tid=376243
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как написать в VBA функцию аналог ВПР?
    #39805417
avgust2047
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет друзья.
Ищу помощи

впервые столкнулся с программированием. записал простой макрос с впр, но с ним много проблем.

во вложении исходная таблица Лист1 я её обрезал и Лист2 откуда вытягиваем искомое, её тоже обрезал.
помогите сделать красиво. Нужно проВПРить от ячейки I2 до конца ближайшего слева столбца [-1]., чтобы не уехало на дно. т.к. колво строк может быть от 2тыс до 140тыс.
искомое значение 4 столб D из Листа2 нужно вытянуть данные(меж) из 2го столбца

Нашел на форумах такую штуку, см.ниже, но не справился с ней.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
' Макрос2 Макрос
'
 With ThisWorkbook.Worksheets("Лист1")
  .Range(.Cells(2, 1), .Cells(5000, 1)).FormulaR1C1 = "=VLOOKUP(RC[-5],Лист2!R1C1:R114C2,2,0)"
 End With
 
End Sub


Модератор: Учимся использовать тэги оформления кода - FAQ

СПАСИБО.
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #39805526
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avgust2047,
из правил форума, где Вы разместили тот же вопрос: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=116530&TITLE_SEO=116530-prostoy-vpr https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=rules 4. Не рекомендуется

4.1. Создавать одинаковые темы или сообщения в разных форумах (cross-posting). Публикуя один и тот же вопрос в разных форумах и на дружественных сайтах вы заставляете сразу нескольких людей параллельно думать над вашей задачей и обесцениваете усилия тех, кто даст ответ вторым-третьим и т.д.
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #39805542
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, мне всегда было интересно, что такого ужасного в cross-posting? Допустим кто-то опубликовал вопрос на одном форуме, и вероятно, несколько человек параллельно будут думать над задачей? А если аудитория думающих будет больше, то решение может найтись быстрее и решений может оказаться несколько? Если помощь бесплатная, то усилия в любом случае не имеют цены для помогающего? Здоровая конкуренция между сайтами (даже дружественными) лишь улучшит их качество?
...
Рейтинг: 0 / 0
Как написать в VBA функцию аналог ВПР?
    #39805615
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyчто такого ужасного в cross-posting?В самом кроссе - ничего. Отторжение возникает потому, что 99% кросс-постеров не обслуживают созданный пакет вопросов. Т.е. не дублируют высказанные в одном треде светлые мысли и идеи в другой, не публикуют финальные решения (об объяснениях даже речи не идёт!), даже не публикуют в тредах ссылки на кросс-темы. Т.е. вина за отторжение - практически целиком и полностью на авторе.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как написать в VBA функцию аналог ВПР?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]