Доброй ночи товарищи.
Есть небольшая задачка, с которой мне спровиться сложно в силу невладения VBA. А решить ее нужно обязательно средствами Excel.
Итак, есть две таблицы - Book1 и Book2. В Book1, допустим один столбец значений - АА, в Book2 - 2 столбца АА и ВВ. Необходимо скопировать ячейку А1 из Book1, найти это значение в Book2 в столбце АА, скопировать соответствующее ему значение из столбца ВВ и вставить это значение в В1 в книге Book1. И так далее А2, А3.... Аn до конца списка (или указанное количество циклов). При ненахождении значения в Book2, пропустить эту ячейку и продолжить со следующей.
Заранее спасибо за помощь
Макрос найти/заменить
Модератор: Naeel Maqsudov
хм, а функция =ВПР точно не подойдёт ?))
1. Имеем две книги
book1.xls
book2.xls
и надстройку r1_r2_sopost.xla,
ее кладем в C:\Documents and Settings\user_01\Application Data\Microsoft\AddIns
и подключаем меню Сервис\Надстройки
2. При активной book1.xls с помощью панели инструментов надстройки r1_r2_sopost
указываем (выделяем диапазон и нажимаем кнопку Name_r1 и Name_r2 соответственно) два диапазона с именем:
Name_r1(в книге book1.xls) - содержит значения для поиска
Name_r2(в книге book2.xls) - содержит справочник, место поиска
3. Встаем на свободное необходимое место на листе (в книге book1.xls) и
выполняем команду (нажимаем кнопку) "Сопоставление".
При этом Макрос надстройки копирует формулы сопоставления диапазонов Name_r1 и Name_r2 (в формулах используется функция ВПР)
в указанный диапазон. Происходит сопоставление значений.
и.т.д. в соответствии с количеством строк Name_r1 и столбцов Name_r2
Далее вы уже можете скопировать сформированный диапазон, "вставить как значения" и т.д.
Примечание:
1.При отсутствии искомого значения в диапазоне Name_r2 происходит замена значением "".
2.При отсутствии значения, соответсвующего искомому (а1 -есть, а b1-пустая ячейка)
выдается 0 - это особенность функции ВПР.
3.При наличии нескольких искомых значений значений в диапазоне Name_r2 - берется 1-ое.
book1.xls
book2.xls
и надстройку r1_r2_sopost.xla,
ее кладем в C:\Documents and Settings\user_01\Application Data\Microsoft\AddIns
и подключаем меню Сервис\Надстройки
2. При активной book1.xls с помощью панели инструментов надстройки r1_r2_sopost
указываем (выделяем диапазон и нажимаем кнопку Name_r1 и Name_r2 соответственно) два диапазона с именем:
Name_r1(в книге book1.xls) - содержит значения для поиска
Name_r2(в книге book2.xls) - содержит справочник, место поиска
3. Встаем на свободное необходимое место на листе (в книге book1.xls) и
выполняем команду (нажимаем кнопку) "Сопоставление".
При этом Макрос надстройки копирует формулы сопоставления диапазонов Name_r1 и Name_r2 (в формулах используется функция ВПР)
в указанный диапазон. Происходит сопоставление значений.
Код: Выделить всё
------------------------------------------
=ЕСЛИ(ЕОШИБКА(ВПР(ИНДЕКС(Name_r1;1;1);Name_r2;1;0));"";ВПР(ИНДЕКС(Name_r1;1;1);Name_r2;1;0))
=ЕСЛИ(ЕОШИБКА(ВПР(ИНДЕКС(Name_r1;1;1);Name_r2;2;0));"";ВПР(ИНДЕКС(Name_r1;1;1);Name_r2;2;0))
...
=ЕСЛИ(ЕОШИБКА(ВПР(ИНДЕКС(Name_r1;2;1);Name_r2;1;0));"";ВПР(ИНДЕКС(Name_r1;2;1);Name_r2;1;0))
=ЕСЛИ(ЕОШИБКА(ВПР(ИНДЕКС(Name_r1;2;1);Name_r2;2;0));"";ВПР(ИНДЕКС(Name_r1;2;1);Name_r2;2;0))
------------------------------------------
Далее вы уже можете скопировать сформированный диапазон, "вставить как значения" и т.д.
Примечание:
1.При отсутствии искомого значения в диапазоне Name_r2 происходит замена значением "".
2.При отсутствии значения, соответсвующего искомому (а1 -есть, а b1-пустая ячейка)
выдается 0 - это особенность функции ВПР.
3.При наличии нескольких искомых значений значений в диапазоне Name_r2 - берется 1-ое.
- Вложения
-
- Books.zip
- (27.67 КБ) 261 скачивание
Avsha,
Спасибо, дружище!!
Спасибо, дружище!!
замечательное решение!
а такой вопрос, а как сделать в обратную сторону?
тоесть чтоб в итоговом массиве были только те записи которые отсутствуют в первом файле но присутствуют во втором?(из 2х списков должников за 2 соседних месяца вытащить тех кто в первом месяце оплатил и отсутствует во втором файле)
как получить разницу двух файлов?
а такой вопрос, а как сделать в обратную сторону?
тоесть чтоб в итоговом массиве были только те записи которые отсутствуют в первом файле но присутствуют во втором?(из 2х списков должников за 2 соседних месяца вытащить тех кто в первом месяце оплатил и отсутствует во втором файле)
как получить разницу двух файлов?