функция подстановки в Excel

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

mokintoh
Сообщения: 8
Зарегистрирован: 17 мар 2009, 21:08

Помогите пожалуйста! Есть два файла с базой сотрудников (к примеру 1файл-приемник, 2 файл-передатчик). Необходимо сравнить их и заполнить отсутствующие поля в файле-приемнике, такие как должность, разряд и т.д (не одно поле). Я встретил здесь очень интересный файл надстройки от Teslenko_EA, но он не всегда может выручить - для нескольких полей приходится процедуру подстановки повторять и колонка вся должна быть пустой, а файлов-передатчиков может быть два сразу или через месяц снова прийти, но это полбеды)) встречаются два Иванова Ивана Ивановича и он забьет первого из них :confused: . Различить данных сотрудников можно только по дате рождения (табельный номер есть только в файле-приемнике, в организации передатчика его не знают). И возможно ли организовать добавление нового сотрудника, если он есть в передатчике, а в приемнике пока нет (или хотябы как-то об этом оповещать)? Заранее извиняюсь если данная тема уже была - искал по поиску (может не нашел).
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте mokintoh.
"два файла с базой " - очевидно речь о файлах в таблицах которых находится база данных, а не радио устройства (приемник, передатчик :) )
При работе с таблицами баз данных у каждой записи (строки) должен быть уникальный ключ, поле (столбец) которому можно ее идентифицировать.
Ни дата рождения ни фамилия идентификатором быть не могут (в Вашем случае). Табельный номер для этой цели подойдет, но необходимо чтобы во всех таблицах записи (строки) сотрудников имели такой ключ. Единожды прописав табельный номер во всех таблицах Вы лищите себя проблем в дальнейшем.
файл надстройки о котором Вы упоминали, это образец создания инструмента для решения таких задач в Excel.
Но если подобная задача не последняя, я рекомендую Вам заняться изучением SQL и Баз данных, такие задачи это их категория.
Евгений.
mokintoh
Сообщения: 8
Зарегистрирован: 17 мар 2009, 21:08

Спасибо за ответ. Решения значит не получится? Вторичные файлы присылает организация, которая не знает табельные номера наших сотрудников, и не будет их у себя проставлять - вот в чем дело. Наверное можно применить простой вариант не влезая в SQL (хотя спасибо за литературу - обязательно займусь изучением) изобразить формулу сравнения используя ВПР.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

&quot писал(а):Наверное можно применить простой вариант не влезая в SQL
SQL - это все-таки более простой вариант.
В SQL одним единственным запросом можно выбрать из файла-передатчика данные, которые отсутствуют в приемнике (по критериям ФИО+дата рождения). Т.е. полностью новые.
Вторым запросом можно выбрать те, которые выборочно обновляются. И т.д.
SQL - в данном случае это панацея :)
И он к листам MS Excel вполнен применим.
mokintoh
Сообщения: 8
Зарегистрирован: 17 мар 2009, 21:08

В общем теорию я понял - бери учебники и штудируй... Интересно только как скоро это я изобрету? Мне сегодня нужен именно этот вариант решения, завтра я пока не знаю - на сколько реально возникнет потребность полученных мною знаний. Специфика работы не та, чтобы постоянно творить, в общем то потому я сюда и обратился в надежде, что уже были у кого-то такие проблемы и ему реально помогли готовым решением. А пока это все выростает в курсы самоосознания твоей неполноценности... Я постараюсь изучить "панацею" - SQL, но это займет явно не 1 день. А мне нужно заполнить ячейку C2 когда совпадут данные в ячейках А2 и B2 в первой и во второй таблице - вот и все! Может есть все-таки еще тут светлые головы?
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Mokintoh, если вам не охота заморачиваться с изучением SQL и жалко на это времени - оформите вашу проблемку как freelans заказ. За "пару" тысяч IMHO тут найдётся достаточное количество специалистов готовых потратить часик на её решение.
Почему часик а не пару минут ? Потому что "дьявол в подробностях" и промышленная задача отличается от учебного примера.
Можно так же попробовать получить решение на халяву опубликовав запрос в
разделе "Решите мне задачку" этого форума ...
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

mokintoh писал(а):Вторичные файлы присылает организация, которая не знает табельные номера наших сотрудников....... изобразить формулу сравнения используя ВПР.
Не понял причем тут ВПР. Обычных операций сравнения должно хватить вполне.
Этот разговор будет предметным, если будут файлы.
Эсли это дело такое разовое, то можно и макрос написать, но нет никакого желания делать "абстрактный" макрос. Давайте Ваши файлы с фальсифицированными данными. По паре десятков записей к каждом для отладки хватит.
mokintoh
Сообщения: 8
Зарегистрирован: 17 мар 2009, 21:08

Ок. Высылаю образцы, надеюсь разберетесь в сути. Заранее благодарен!
А времени не сколько жалко - сколько просто не хватает. Специфика работы не такая чтобы сидеть только над этим
Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Здравствуйте mokintoh.
Решение с применением ADO и SQL.
Евгений.
Вложения
PriemSQL.zip
(17.36 КБ) 56 скачиваний
mokintoh
Сообщения: 8
Зарегистрирован: 17 мар 2009, 21:08

Огроменное спасибо Евгений! Все работает отлично, теперь то мне и не надо будет судорожно конопатиться в поисках верного решения :p Диапазон сравнения данных расширить уж как нибудь думаю смогу своими бестолковыми ручонками))
Надеюсь, что данное решение пригодится и остальным страждущим...
Всем до свидания.
Ответить