|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.08.2019, 14:12 | #1 |
Регистрация: 14.08.2019
Сообщений: 8
|
Кастомный ВПР с помощью функции
Всем привет. Имеется следующий файл:
https://i.imgur.com/WmLw2Um.png Состоит из "Основного" и любого количества листов "Товары", в которых хранится код из базы, цена и наличие, которое указано в название листа в скобках (например, Товары 1 (3)) https://i.imgur.com/3RmmL9m.png https://i.imgur.com/IZGbotf.png Шаги следующие: 1) В лист "Основной" в 4 столбец вставляем формулу и проводим на все ячейки этого столбца: =ВПР(RC[-2];'Товары 1 (3)'!R1C1:R3C2;2;0) https://i.imgur.com/pfdWnTJ.png 2) Фильтруем по значению "Все, кроме Н/Д" и в соседний столбец ставим значение из этого столбца, а в 13 столбец "Наличие" ставим то значение, которое указано в названии текущего листа в скобках, снимаем фильтр: https://i.imgur.com/a4z1iCi.png 3) Копируем и вставляем 5 столбец как значение, затем очищаем 4 столбец: https://i.imgur.com/soGnhWs.png Этот блок завершен, данные с первого листа подтянули в основной через впр, поставив в нужный код из базы нужные цены и наличие. Следующий блок начнется если есть следующий лист с товарами: 4) В лист "Основной" в 4 столбец вставляем формулу и проводим на все ячейки этого столбца: =ВПР(RC[-2];'Товары 2 (+)'!R1C1:R6C2;2;0) https://i.imgur.com/hhiDuEU.png 5) Фильтруем по значению "Все, кроме Н/Д" и в соседний столбец ставим значение из этого столбца, а в 13 столбец "Наличие" ставим то значение, которое указано в названии текущего листа в скобках, снимаем фильтр: https://i.imgur.com/vd1hglk.png На данном шаге встретилось первое совпадение: Товары 1 (3) 14996 45990 Товары 2 (+) 14996 44990 В данном случае цена перезаписывается с 45990 на 44990, наличие с 3 на + 6) Копируем и вставляем 5 столбец как значение, затем очищаем 4 столбец: https://i.imgur.com/nsMy1P7.png Я для начала создал функцию с 3 параметрами: Код:
https://i.imgur.com/LEMswzZ.png 1) Как хранить ссылку на выбранный лист? 2) Можно ли сделать функцию, которая сама будет перебирать листы с "Товар 1 (N)" до "Товар X (N)", N-что нужно подставить в 13 столбец наличие, а X-количество листов. 3) Если это сделать трудно, то ручной вариант с перебором этой функции тоже подойдет. Подскажите, с чего начать? Спасибо Последний раз редактировалось Zaris; 22.08.2019 в 15:45. |
22.08.2019, 14:48 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
начните с того, что опишите задачу, которую решаете, а не способ которым Вы пытаетесь ее решить
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
22.08.2019, 15:54 | #3 |
Регистрация: 14.08.2019
Сообщений: 8
|
|
22.08.2019, 16:22 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
см.вложение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
26.08.2019, 09:42 | #5 |
Регистрация: 14.08.2019
Сообщений: 8
|
все отлично, спасибо, немного допилил (в 13 столбец теперь подставляются значения между скобок в названии листа, пишется время выполнения скрипта и скрипт останавливается, если видит лист с названием (...)). В итоге вышло вот это:
Код:
|
26.08.2019, 11:12 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
как я понимаю, в первом листе в столбце B список во время работы не меняется?
Тогда я бы рекомендовал заменить поиск Find на поиск в словаре (см. https://www.planetaexcel.ru/forum/in...#message399225). Один раз считать данные из столбца в память и дальше использовать его. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вычисление функции с использованием разложения в ряд Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, | maximk301 | Помощь студентам | 1 | 20.10.2018 16:20 |
Составить программу для приближенного вычисления значения функции в точке х с помощью разложения в ряд Тейлора. Найти приближенное значение функции с погрешностью менее 0,0001. | marysluva | Помощь студентам | 1 | 18.12.2016 18:13 |
Wp кастомный текстовый дамп | garry1989 | WordPress и другие CMS | 0 | 25.06.2015 14:15 |
Кастомный интерфейс | Начинающий_кодер | C++ Builder | 1 | 15.02.2015 13:08 |