Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 19:07   #1
Игор41
 
Регистрация: 03.06.2010
Сообщений: 5
По умолчанию Поиск данных по условиям соответствия и копирование

Здравствуйте.
Подскажите , пожалуйста, код для решения моего вопроса.
Мне нужно с вашей помощью и VBA найти данные из рабочего листа в других листах,
затем скопировать их в файл.
Условия поиска и копирования я изложил в прикрепленном файле.
Спасибо.
Вложения
Тип файла: rar TestCopyDel.rar (11.5 Кб, 17 просмотров)
Игор41 вне форума Ответить с цитированием
Старый 04.06.2010, 06:16   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Требуются пояснения (по крайней мере, для меня):
1. Что, собственно, нужно искать? Есть заполненные строки на листе "Macro". Где искать - определяется столбцом "E". А по каким совпадениям (по каким столбцам) считать, что мы нашли то, что требуется?
2. Что должно быть в таблице, которую мы будем копировать в файл "HET.xls"? Вы написали соответствие некоторых столбцов. Что должно быть в остальных?
3. При копировании в файл, нужно ли смотреть, есть ли уже такая запись? Или копировать по умолчанию? Кстати, можно получить данные из файла, не открывая его. Записать же данные можно только в открытый файл. Но, можно сделать так, что пользователь этого даже не заметит.
4. Лучше всего, чтобы у отвечающих не было к Вам вопросов, добавьте лист с примером результирующей таблицы, которая должна быть записана в файл, на основании имеющихся данных.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 04.06.2010, 12:41   #3
Игор41
 
Регистрация: 03.06.2010
Сообщений: 5
По умолчанию

Спасибо большое, что откликнулись. Это было так неожиданно для меня,
но очень приятно.
Я подкорректировал свои объяснения согласно Вашим вопросам.

У меня исходные для поиска строки находятся на листе ,,Macro,,.
1 Найти соответствующие стороки на листах "Order Dupl" и "Order Gen" в именованных диапазонах

Условия поиска:
Если в исходной строке в столбце E значение "оригинал", то ищем на листе "Order Gen"
Иначе ищем на листе "Order Dupl"

Условия соответствия:

исходная строка искомая строка
столбец A соответствует столбцу A
столбец B соответствует столбцу C
столбец I соответствует столбцу K
столбец J соответствует столбцу L
столбец K соответствует столбцу O

2 Скопировать найденные строки в файл HET.xls (путь C:\Users\Igor\Documents) в первую незаполненную строку. Есть ли возможность при вставке не открывать файл HET.xls?
3 Удалить найденные строки с листов "Order Dupl" и "Order Gen"

На листе ,,HETxls,, образец таблицы , которую хочу получить в результате манипуляций с копированием в файле ,,HET.xls,,
Вложения
Тип файла: rar TestCopyDel.rar (12.4 Кб, 11 просмотров)
Игор41 вне форума Ответить с цитированием
Старый 04.06.2010, 12:55   #4
Игор41
 
Регистрация: 03.06.2010
Сообщений: 5
По умолчанию

В продолжение ответа на вопрос.
При записи в файл проверка на наличие таких же записей в файле не нужна. Если не получится записать в закрытый файл, то это не самое принципиальное. А вот сделать так, что пользователь этого даже не заметит - здорово.
...Хотя пользователь это я.
Игор41 вне форума Ответить с цитированием
Старый 08.06.2010, 08:29   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Откройте файл "TestCopyDel_2.xls" и запустите макрос "Main". Макрос не проверяет наличие указанного пути и файла (а нужно? и что в этом случае делать?). Поэтому, предварительно поместите файл с именем "NET.xls" в папку "C:\Users\Igor\Documents". Если требуется другой путь или другое имя файла для записи данных - измените соответствующую строку в коде макроса. Там есть комментарий.
Вложения
Тип файла: rar TestCopyDel.rar (19.7 Кб, 25 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 09.06.2010, 11:41   #6
Игор41
 
Регистрация: 03.06.2010
Сообщений: 5
По умолчанию

SAS888, большое спасибо, что не забыли про меня.
Мне очень понравился ваш макрос, я его собираюсь целиком использовать у себя.
Хочу попросить Вас внести корректировку в код.
Во время проверки условий соответствия Ваш код находит методом Find первое попавшееся совпадение, и если какое-нибудь условие из оставшихся (там, где много If идет) не устраивает, то он теряет к этой строке (из Листа ,,Macro,,) всякий интерес. А на самом деле совпадений по столбцу А может быть больше, чем одно, из-за ошибок юзера при вводе.
А строка, которая совпадет по всем условиям, там точно есть, т.к. я ее оттуда же и копировал.

Проверка на наличие пути и файла не нужна. Это для персонального использования, и я помню, что этот файл там есть. (главное, чтоб макрос об этом всегда помнил)
Спасибо,
Игорь.
Игор41 вне форума Ответить с цитированием
Старый 09.06.2010, 14:06   #7
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В следующем примере поиск производится до первого совпадения всех критериев.
Вложения
Тип файла: rar TestCopyDel_3.rar (17.8 Кб, 46 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 10.06.2010, 23:23   #8
Игор41
 
Регистрация: 03.06.2010
Сообщений: 5
По умолчанию

Спасибо большое.
Все работает как я и хотел.
Вы мне очень помогли.
Игор41 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск/копирование данных в edit kate158 Компоненты Delphi 4 24.09.2009 16:58
поиск и подсчет по условиям insector Microsoft Office Excel 1 18.09.2009 18:47
Таблица соответствия типов данных Delphi и MS SQL Server 2000 jane БД в Delphi 1 07.08.2008 19:26