Страницы: 1 2 След.
RSS
Макрос: Поиск ячеек во всех открытых книгах.
 
Прошу помочь.  
Мне нужен макрос, который берет все данные из 10 столбца и ищет их  
совпадение во всех открытых файлах. При совпадении, пусть в 12 столбце, напротив совпавшего кода будет запись, - "имя файла, номер строки", если совпадение происходит и с  
другим файлом, то такая же запись в 13 столбце, 14-ом.. Формула здесь  
не поможет, т.к. прайс-листы у всех разные и к каждому прикручивать  
ВПР...    
-----------------------------  
Если есть возможность организовать поиск в определенной папке, не открывая файлы, это было бы вообще замечательно.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Была похожая тема, Pavel55 код писал, посмотрите  
 
http://www.planetaexcel.ru/forum.php?thread_id=15065  
 
В файле присутствует макрос "ПоискВоВсехФайлахИПапках"  
 
Данный макрос:  
1. запрашивает текст для поиска (число, слово, выражение);  
2. запрашивает папку для поиска;  
3. уточняет, искать ли данные во вложенных папках (Папка1\Папка2\Папка3 и т.д.);  
4. осуществляет поиск текста во всех файлах Excel, на всех листах, во всех вложенных папках (если в пункте 3 ответили "Да")  
5. создаёт отдельную книгу с листом "Отчёт", куда копирует найденную информацию целыми строками, с указанием папки, названия книги и листа, где было найдено
 
Hugo, спасибо. Классный поиск. Pavel55, Вам тоже спасибо большое. Молодец.  
 
----------  
.. и опять старик приходит к синему морю. :)  
 
А реально ли доработать так, чтобы сразу все данные вводить для поиска, а не по одному?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Владимир, можете показать парочку файлов, в которых нужно искать совпадения?  
И еще реальное кол-во файлов и кол-во строк в них?
 
{quote}{login=Владимир}{date=04.07.2011 12:09}{thema=}{post}Hugo, спасибо. Классный поиск. Pavel55, Вам тоже спасибо большое. Молодец.  
 
----------  
.. и опять старик приходит к синему морю. :)  
 
А реально ли доработать так, чтобы сразу все данные вводить для поиска, а не по одному?{/post}{/quote}конечно)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Реально может быть до 10-15 файлов. Строк от 10000 до 65000. Структура у всех файлов разная. Я Вам примерно накопировал из разных прайсов. Если этого мало, то только по электронке могу.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Эх, уже нарисовал("формульный" макрос, без открытия файлов), но раз структура файлов разная, то не пойдет. Видимо, только Find.
 
{quote}{login=nilem}{date=04.07.2011 01:04}{thema=}{post}Эх, уже нарисовал("формульный" макрос, без открытия файлов), но раз структура файлов разная, то не пойдет. Видимо, только Find.{/post}{/quote}  
 
Спасибо за  участие, nilem.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=04.07.2011 01:29}{thema=Re: }{post}{quote}{login=nilem}{date=04.07.2011 01:04}{thema=}{post}Эх, уже нарисовал("формульный" макрос, без открытия файлов), но раз структура файлов разная, то не пойдет. Видимо, только Find.{/post}{/quote}  
 
Спасибо за  участие, nilem.{/post}{/quote}посмотрите работает ли. Времени разбираться нету) Alt+F8
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Ну, раз уж написал. Этот файл нужно положить в одну папку с файлами-источниками.
 
nerv, сработало. Долго правда, но отлично сработало, даже ссылки сразу на файлы нарисовал. Спасибо.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=}{date=04.07.2011 01:54}{thema=}{post}Ну, раз уж написал. Этот файл нужно положить в одну папку с файлами-источниками.{/post}{/quote}  
 
Ваш макрос  - GetValue200? Положил к исходным файлам, потестил. Долго ждал, ничего не произошло.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
nerv, а этот параметр могу я перед началом работы макроса задать сам - TextToFind = [J2:J22]? Т.к. в файле может быть [J2:J5] и [J2:J35]. Т.е. скажем TextToFind = [(выделенный диапазон)]?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
"Ваш макрос - GetValue200? Положил к исходным файлам, потестил. Долго ждал, ничего не произошло."  
Наверное, просто очень долго.  
Вот вариант, должно быть побыстрее. Суть такая: ищем первое совпадение в файле-источнике, и берем данные из того столбца, где нашли это совпадение.  
Попробуйте. Ну, для интереса.
 
Спотыкается на этой строке:  
 
Set r = .Sheets(1).UsedRange.Find(What:=x(k, 1), LookIn:=xlValues, LookAt:=xlWhole)
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=04.07.2011 02:18}{thema=}{post}nerv, а этот параметр могу я перед началом работы макроса задать сам - TextToFind = [J2:J22]? Т.к. в файле может быть [J2:J5] и [J2:J35]. Т.е. скажем TextToFind = [(выделенный диапазон)]?{/post}{/quote}конечно ; ) Только не более 1-го диапазона за раз.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Последний раз :)  
Если нет, значит нет.
 
...та же картинка - 10 минут в задумчивости, а потом мне надоедает.  
 
---  
95554
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=nerv}{date=04.07.2011 03:04}{thema=Re: }{post}{quote}{login=Владимир}{date=04.07.2011 02:18}{thema=}{post}nerv, а этот параметр могу я перед началом работы макроса задать сам - TextToFind = [J2:J22]? Т.к. в файле может быть [J2:J5] и [J2:J35]. Т.е. скажем TextToFind = [(выделенный диапазон)]?{/post}{/quote}конечно ; ) Только не более 1-го диапазона за раз.{/post}{/quote}
 
Ваш макрос сразу бросается искать, он не предлагает ввести значения, как у Pavel55. Поэтому я и спрашиваю, переделать можете на то, чтобы я диапазон для поиска сам указывал?  
 
---  
15768
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Макрос не мой)  
 
'TextToFind = [J2:J22] - за комментируйте эту строку (как сделал я здесь)
 
эту  
'TextToFind = Application.InputBox("Введите текст для поиска:", "Поиск")  
замените на эту  
TextToFind = Application.InputBox("Введите текст для поиска:", "Поиск", Type:=8)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=nerv}{date=04.07.2011 04:06}{thema=to Владимир}{post}Макрос не мой)  
 
'TextToFind = [J2:J22] - за комментируйте эту строку (как сделал я здесь)
 
эту  
'TextToFind = Application.InputBox("Введите текст для поиска:", "Поиск")  
замените на эту  
TextToFind = Application.InputBox("Введите текст для поиска:", "Поиск", Type:=8){/post}{/quote}  
Только текст тоже нужно поменять - ведь диапазон нужно указывать. :))
 
TextToFind = [J2:J22] - а с этим ограничением что сделать?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=04.07.2011 05:13}{thema=}{post}TextToFind = [J2:J22] - а с этим ограничением что сделать?{/post}{/quote}советую закомментировать (поставить ' в начале строки), мало ли в дальнейшим потребуется
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
.. всё равно не предлагает выбор диапазона сделать.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=04.07.2011 08:12}{thema=}{post}.. всё равно не предлагает выбор диапазона сделать.{/post}{/quote}Должно) Попробуйте это. Выделяете диапазон, например, мышкой.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Dim TextToFind As Variant можно сразу Range объявлять.
 
Сказка..    
nerv, я Ваш должник. Спасибо.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
В процессе работы появились маленькие недоделки.  
 
1. Макрос не ищет одну ячейку, выдаёт ошибку. Если указываю более одной, то порядок.  
2. Не всегда, но иногда найденные результаты дублируются. Проверял, - повторов в файле нет.  
3. Частенько от макроса происходит предупреждение "Данные с которыми вы работали могли быть потеряны.. Восстановить..." Пока ничего страшного не произошло, но напрягает перспектива потерять файл..
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=06.07.2011 10:14}{thema=}{post}В процессе работы появились маленькие недоделки.  
 
1. Макрос не ищет одну ячейку, выдаёт ошибку. Если указываю более одной, то порядок.  
2. Не всегда, но иногда найденные результаты дублируются. Проверял, - повторов в файле нет.  
3. Частенько от макроса происходит предупреждение "Данные с которыми вы работали могли быть потеряны.. Восстановить..." Пока ничего страшного не произошло, но напрягает перспектива потерять файл..{/post}{/quote}попробуйте так. Но я ни чего не обещаю
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Имхо, со словарем все же должно быть быстрее и надежнее. Владимир, попробуйте выбрать 2-3 (ну или больше) файла с прайсами, наиболее отличающиеся по расположению данных, форматам и пр. Пришлите сюда: valej5@mail.ru
Страницы: 1 2 След.
Читают тему
Наверх