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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2012, 18:03   #1
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию Макрос: обновление одного файла данными из другого

Доброго времени суток!

Да, есть достаточное количество похожих топиков, но увы, острый случай нехватки скилла мне не дает вычленить решение проблемы, разбросанное между многими решениями других проблем на форуме Так что, уж извините, если что где не смог увидеть.

Ситуация: есть два файла, один с большой рабочей таблицей, второй с таблицей поменьше. Структура, в принципе, одинаковая, но порядок и число столбцов разные. Первый столбец всегда содержит дату, а первая строка - имеет заголовки с унифицированными кодами.

Задача: с помощью макроса перенести более новые данные из второго файла в соответствующие столбцы файла первого.

Прилагаю архив с примерной структурой файлов (оригинальные во многие разы более объемны), где Main - первый, рабочий файл, который нужно обновить данными из второго файла Source.

Заранее благодарен всякому, кто предложит любую помощь.
Вложения
Тип файла: zip Пример.zip (13.0 Кб, 31 просмотров)
darthraziel вне форума Ответить с цитированием
Старый 07.09.2012, 20:36   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если согласны обновлять, указав в настройках какой столбец в какой копировать (даты сверятся кодом, а пары столбцов нужно указать в настройках), и готовы после 15-го раза заплатить - то решение уже есть -
http://www.excelworld.ru/index/comparefiles_find/0-25
или
http://ibay.narod.ru/other/CompareFiles.Find.rar

Ну а если нужен полный автомат - нужно писать...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 08.09.2012 в 13:30.
Hugo121 вне форума Ответить с цитированием
Старый 10.09.2012, 13:26   #3
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Спасибо за ссылку, но нет, такой вариант мне не подойдет.
Действительно, нужно писать, и вот на этом этапе у меня и возникают проблемы
darthraziel вне форума Ответить с цитированием
Старый 10.09.2012, 13:42   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я сперва неправильно Вас понял - "более новые" это за те даты, которых ещё нет в Main? Существующие даты обновлять не нужно?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.09.2012, 13:46   #5
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Да, именно так.
darthraziel вне форума Ответить с цитированием
Старый 10.09.2012, 13:51   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Стал думать над задачей - что-то больно сложная задача...
Хотя с виду не скажешь
Вероятно, тут проще на SQL делать - но я по SQL не специализируюсь
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.09.2012, 13:58   #7
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Цитата:
Стал думать над задачей - что-то больно сложная задача...
Хотя с виду не скажешь
Вот и у меня аналогичная ситуация
А, казалось бы, нужно всего-то добавить следующую дату в первом столбце, после чего рассовать значения по строке из второго файла в первый по коду. И зашить это в цикл. Как-то так.

Цитата:
Вероятно, тут проще на SQL делать - но я по SQL не специализируюсь
К сожалению, я тоже

Так или иначе, спасибо большое за ответ, буду копать глубже и ждать дальше, может, кто-нибудь еще сможет помочь.
darthraziel вне форума Ответить с цитированием
Старый 10.09.2012, 14:18   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если бы просто добавить следующую - это легко.
Но ведь может быть какая-то дата уже есть, но с данными по другому столбцу.
И после того, как обработали один столбец - все даты уже будут занесены, с данными по этому столбцу (получится ситуация, как я написал выше).
Т.е. нужно совместить две таблицы, "забив" пустоту в Main данными из Source, и дописав отсутствующие ниже.
Мне кажется, что это задача для SQL.
Хотя можно сделать и макросом перебором, но долго.
Можно быстро макросом на массивах и словарях - но кажется сложно (сразу алгоритм не нарисовался)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 10.09.2012, 14:31   #9
darthraziel
Пользователь
 
Регистрация: 21.02.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Но ведь может быть какая-то дата уже есть, но с данными по другому столбцу.
Это, скорее всего, практически невозможно.
Но возникла мысль, что данные в Source по уже прописанным в Main датам могут быть более корректные, поэтому, думается, лучше всего было бы просто переносить полностью все позиции из Source в Main.
В Source всегда будет меньше строк и меньше столбцов, чем в основной книге.

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Хотя можно сделать и макросом перебором, но долго.
Я, в принципе, так изначально и думал.
Долго - это всмысле долго писать, или макрос долго будет работать? Потому что если второе, то это несущественная проблема.
darthraziel вне форума Ответить с цитированием
Старый 10.09.2012, 15:09   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Работать будет долго.
Но раз Вы говорите, что нужно обновить данные - то это ведь очень похоже на update SQL - обновить одну таблицу из другой.
Спец нужен - код будет простой и быстрый.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ComboBox на UserForm заполнить данными с другого листа ? Snekich Microsoft Office Excel 2 08.12.2011 18:37
Работа с данными с другого листа printer Microsoft Office Excel 1 14.06.2011 20:01
Копирование данных из одного файла Excel в другой через макрос I.P.iX Microsoft Office Excel 0 31.05.2011 22:20
Макрос, запускающий макрос из другого закрытого файла petruha Microsoft Office Excel 7 14.03.2010 11:31
Создать файл с данными на основе другого файла. Паскаль)) ТРОЯН=) Помощь студентам 13 16.04.2009 18:51