Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135

Последовательный ВПР

04.12.2017, 13:21. Показов 1745. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, всем привет. Подскажите, как через цикл подтянуть по Поставщикам и датам из Листа2 в Лист1.
Через Application.VLookup не совсем удобно т.к он не просматривает горизонталь.
Вложения
Тип файла: xlsx примф.xlsx (16.8 Кб, 9 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2017, 13:21
Ответы с готовыми решениями:

ВПР
Доброго дня Прошу помочь с макромом по аналогии ВПР у меня большой объём даных 500000 строе Все что находил, виснет Писк по...

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

Проблемы с ВПР
Столкнулся с такой проблемой. Есть форма в которой прописана формула ВПР, каждый отдел заполняет свою форму (она у все одинаковая) я...

12
3947 / 2340 / 790
Регистрация: 02.11.2012
Сообщений: 6,220
04.12.2017, 14:42
для В3 и тянем вниз.
Code
1
=ВПР(Лист1!$A3;Лист2!$A$3:$C$19;ПОИСКПОЗ(Лист1!B$1;Лист2!$A$2:$C$2;);)
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
04.12.2017, 15:18  [ТС]
Vlad, спасибо, большое-этот вариант я знаю, но мне хотелось бы на VBA. Т.к у меня есть код, который открывает необходимые файлы и создает сводную, после чего нужно чтобы данные перенеслись., не хотелось бы нагружать файл дополнительными формулами. В дальнейшем планирую доработать, чтобы в определенное время считал
0
3947 / 2340 / 790
Регистрация: 02.11.2012
Сообщений: 6,220
04.12.2017, 15:35
Цитата Сообщение от hannu Посмотреть сообщение
но мне хотелось бы на VBA
Visual Basic
1
2
Range("B3") = WorksheetFunction.VLookup(Sheets("Лист1").Range("A3"), Sheets("Лист2").Range("A3:C19"), _
    WorksheetFunction.Match(Sheets("Лист1").Range("B1"), Sheets("Лист2").Range("A2:C2"), 0), 0)
как загнать формулу в цикл продумайте сами.
но подозреваю это не лучший вариант.
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
04.12.2017, 16:07  [ТС]
Понимаю, что не лучший, но по-другому никак.
0
3947 / 2340 / 790
Регистрация: 02.11.2012
Сообщений: 6,220
04.12.2017, 16:10
Цитата Сообщение от hannu Посмотреть сообщение
но по-другому никак.
всегда есть "два путя"
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
04.12.2017, 17:16  [ТС]
Так а как бы мне теперь избавиться от ошибки Run Time Error 1004
Visual Basic
1
2
3
4
5
6
7
Sub Privaes()
For x = 3 To 19
Sheets("Лист1").Cells(x, 2) = WorksheetFunction.VLookup(Sheets("Лист1").Cells(x, 1), Sheets("Лист2").Range(Cells(3, 1), Cells(19, 3)), _
WorksheetFunction.Match(Sheets("Лист1").Cells(1, 2), Sheets("Лист2").Range(Cells(2, 1), Cells(2, 3)), 0), 0)
 
Next x
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
05.12.2017, 23:59
Перед всеми cells указать родителя. Перед всеми!
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
06.12.2017, 01:58
hannu, для В3
Code
1
=ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("sum_pay_rur";Лист2!$A$1;"date_in";B$1;"client_name";$A3)
Как я получил эту формулу? Выделил ячейку, нажал = , кликнул в ячейку сводной таблицы, нажал Ввод. Формула создалась автоматически! Осталось только заменить фамилию и дату на ссылки в первом столбце и первой строке.
Теперь при изменении дизайна сводной формула останется рабочей (при условии, что имена полей останутся теми же).
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
06.12.2017, 12:34  [ТС]
Допилил код, но столкнулся с другой сложностью.
Этот код работает в одной книге с двумя листами, а как бы сделать если данные в 2х разных книгах. Пробовал указывать полноценный путь, но не срабатывало. Через Wokrbooks("Name.xlx").Worksheets("Name") ..... не получилось
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Privaes()
On Error Resume Next
Lrou = Sheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
PTLrou = Sheets("Лист2").Cells(Rows.Count, 1).End(xlUp).Row
PTLcol = Sheets("Лист2").Cells(2, Columns.Count).End(xlToLeft).Column
Z = 2
For y = 2 To 25
For x = 3 To PTLrou
Sheets("Лист1").Cells(x, y) = WorksheetFunction.VLookup(Sheets("Лист1").Cells(x, 1), _
Sheets("Лист2").Range(Sheets("Лист2").Cells(3, 1), Sheets("Лист2").Cells(PTLrou, PTLcol)), _
WorksheetFunction.Match(Sheets("Лист1").Cells(1, Z), _ 
Sheets("Лист2").Range(Sheets("Лист2").Cells(2, 1), Sheets("Лист2").Cells(2, PTLcol)), 0), 0)
Next x
Z = Z + 3
y = y + 2
Next y
If Err.Number = 1004 Then
MsgBox ("Данные обновлены")
End If
End Sub
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
06.12.2017, 12:54
Если собираетесь работать с разными книгами (вообще, а тем более) - указывайте конкретно чьи rows и columns собираетесь считать! Может в этом и есть ошибка, не знаю...
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
06.12.2017, 13:03
для доступа к другим книгам используй такую конструкцию
Visual Basic
1
2
3
4
5
6
7
With Wokrbooks("Name.xlx")
    With Worksheets("Name")
        .cells(...
        .rows(...
        
    End With
End With
0
0 / 0 / 0
Регистрация: 08.04.2015
Сообщений: 135
07.12.2017, 16:51  [ТС]
Я просто не совсем понимаю как это внедрить в мой код. Сможете на примере показать

Добавлено через 4 часа 24 минуты
Ребят, вот попробовал данный код внедрить, но ничего не получилось выдает ошибку,невозможно получить свойство vlookup класса worksheetfunction. Причем сделал аналогичный файл и все равно. Уже незнаю где искать ошибку

Добавлено через 23 часа 13 минут
Спасибо всем большое. У меня все получилось, но сделал немного проще, не указывал пути к книгам, а решил нужный мне лист книги скопировать в нужную книгу и оттуда все решать. Скину код, если кому то нужно подделаете под свой файл
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub PrihodVPR()
Lrou = Sheets("Декабрь 2017").Cells(Rows.Count, 2).End(xlUp).Row 'Определение последней строки в таблице декабрь
PTLrou = Sheets("Сводная таблица").Cells(Rows.Count, 1).End(xlUp).Row ' Определение номера последней строки в Сводной таблице
PTLcol = Sheets("Сводная таблица").Cells(4, Columns.Count).End(xlToLeft).Column  'Определение  номер последнего столбца в сводной таблице
Z = 4
For y = 5 To 95
    For x = 3 To Lrou
On Error Resume Next ' Пропускаем ошибки если не найдены совпадения
Sheets("Декабрь 2017").Cells(x, y) = WorksheetFunction.VLookup(Sheets("Декабрь 2017").Cells(x, 2), _
Sheets("Сводная таблица").Range(Sheets("Сводная таблица").Cells(4, 1), _
Sheets("Сводная таблица").Cells(PTLrou, PTLcol)), _
WorksheetFunction.Match(Sheets("Декабрь 2017").Cells(1, Z), _
Sheets("Сводная таблица").Range(Sheets("Сводная таблица").Cells(4, 1), _
Sheets("Сводная таблица").Cells(4, PTLcol)), 0), 0)
 
    Next x
y = y + 2
Z = Z + 3
 
        Next y
 
End Sub
Добавлено через 1 минуту
Вот мой помощник
Visual Basic
1
Workbooks("ПН - Выборка распечатка.XLSX").Sheets("Сводная таблица").Copy After:=Workbooks("План_Приход_оплата декабрь 2017.xlsx").Sheets(Sheets.Count)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2017, 16:51
Помогаю со студенческими работами здесь

Функция ВПР
Не получается вывести результат дело в том что столбец который мы вставляем находится раньше столбца по которому мы ищим куда погружать...

ВПР на vba
Доброго времени суток! В файлах Excel каждый день обрабатываем несколько сотен тысяч строк, много где требуется ВПР, причем, по...

Vlookup (ВПР) на VBA
Здавствуйте, Написал аналог функции vlookup (ВПР) на VBA. Основная задача была сделать нечто, что работает быстрее чем стандартная...

ВПР или макрос?
Уважаемые, добрый день! 25.05.2013 A 22334 25.05.2013 E 232345 25.05.2013 H 454545 25.05.2013 N 676776 25.05.2013 P 89797 ...

Нестандартная функция ВПР
Подскажите пожалуйста, как создать ВПР (ЛВПР) функцию? есть формула ЛВПР =ВПР(F2;ВЫБОР({1;2};J:J;C:C);2;0) как можно создать функцию в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru