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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 17:24   #1
robbe
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 28
По умолчанию сравнение ячеек и добавление нового столбца к таблице

Здравствуйте.
Обращаюсь к вам за помощью, поскольку все способы, известные мне не работают. Буду очень благодарна за помощь.
У меня есть две таблицы: в таблице 1 для каждого № и филиала (№+филиал являютяс уникальными) есть набор значений на разные даты (по неделям). В таблбице 2 также для каждого № и филиала есть уже одно значение на последнюю дату, которой в 1ой таблице нет. Можно ли с помощью макроса, не прибегая к бд access сравнить значения в этих двух таблицах по № и филиалу, и если №и филиал совпали, дописать в первую пустую колонку после заполненных колоноц таблицы 1 значение на новую дату? Но так чтобы при этом, № и филиал из таблицы 1 со всеми своими значениями, если их нет в таблице 2, остались в обновленной таблице. И также id и филиал, которые только появились в таблице 2 должны быть в новой таблице, но для всех предыдущих дат просто оставить пустые ячейки.
Я знаю, как это реализовать с помощью acess и union, но не знаю почему (может из-за большого объема) запрос не работает.
Спасибо за помощь!.
Вложения
Тип файла: rar обновление на новую дату.rar (9.1 Кб, 22 просмотров)
robbe вне форума Ответить с цитированием
Старый 20.01.2010, 06:27   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Откройте оба файла и запустите макрос "Main".
Вложения
Тип файла: rar обновление на новую дату_2.rar (13.0 Кб, 55 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 20.01.2010, 09:27   #3
robbe
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 28
По умолчанию

Спасибо вам большое! Вы мне очень помогли. Потому что через полное соединение и access ну никак работать не хочет для такого объема таблицы. (Если делаю меньше дат, все ок.)
Спасибо!
robbe вне форума Ответить с цитированием
Старый 21.01.2010, 18:00   #4
robbe
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 28
По умолчанию

SAS888, а вы не подскажете, можно ли каким-то способом оптимизировать Ваш код, чтобы он быстрее работал? У меня порядка 40000 записей. Я запустила макрос, он работает уже 45 минут и еще не закончил.. Спасибо.
robbe вне форума Ответить с цитированием
Старый 22.01.2010, 00:10   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте robbe.
мне кажется Ваша конструкция "достойна" обработки в MS Access. т.к. все данные могут быть сохранены в одной таблице а таблица "свод" должна формироваться перекрестным запросом, и речи о "..45 минут.." не будет.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 22.01.2010, 07:51   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В данном случае, Teslenko_EA абсолютно прав. Я могу предложить Вам "быстрый" макрос, но с одним условием: суммарное количество заполненных строк на листах обоих файлов не должно превышать максимально допустимого количества строк на листе. Т.е. в процессе работы макрос объединяет все данные на одном листе. Так, например, если в обоих листах по 40000 строк, то 40000 + 40000 = 80000, что при использовании Excel 2003 больше допустимого 65536. При работе в Excel 2007 проблем не будет.
Откройте оба файла из вложения и запустите макрос "Main". Попробуйте на больших файлах, соблюдая оговоренные ограничения. Время работы должно быть примерно в 200 раз меньше (не проверял).
Вложения
Тип файла: rar обновление на новую дату_3.rar (16.3 Кб, 31 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 22.01.2010, 08:57   #7
robbe
Пользователь
 
Регистрация: 12.01.2010
Сообщений: 28
По умолчанию

В том-то вся и проблема, что первое, что я сделала - это написала запрос в MS Access, но у меня Excel 2000, и все упирается в то, что когда я делаю полное соединение через union (full outer join в Excel 2000 не реализован, насколько я поняла из того, что удалось найти в интернете про версии Excel), запрос не работает, видимо не хватает места. Если бы все удалось в Access, я бы и не просила помощи с макросом vba. Но в любом случае спасибо вам за помощь.
robbe вне форума Ответить с цитированием
Старый 22.01.2010, 10:30   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Надеюсь Вас интересует и решение задачи, а не только общение на тему "о её решении", и "..спасибо вам за помощь.." понимать как "тема закрыта" не надо.
"..в Excel 2000 не реализован..насколько я поняла.." - в источнике данных не требуется реализации чего либо, он просто источник с которым устанавливается связь СУБД (системы управления базами данных). Скорее всего стоит пересмотреть концепцию доступа к данным и задача решится в MS Access.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добавление столбца Chugun БД в Delphi 1 13.01.2010 00:22
сумма ячеек столбца-? Evgenii Компоненты Delphi 5 23.11.2009 18:05
Выделение последнего столбца в таблице Busine2009 Microsoft Office Word 2 26.05.2009 07:20
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09
сравнение с данными в таблице Apo БД в Delphi 5 31.03.2008 19:24