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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2013, 13:23   #1
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
Вопрос Массовая замена внешних связей

Коллеги, добрый день.

Есть файл который собирает данные с других 10 файлов.
Делает он это в 10 колонках и 500 строчках. Соответственно 5000 значений.

Еженедельно этот файл копируется в другую папку, где находятся файлы с аналогичными прежним названиям за исключением номера недели.

То-есть адреса выглядят так:
/1 неделя/файл1 - 1 неделя.xlsx
/1 неделя/файл2 - 1 неделя.xlsx
/1 неделя/файл3 - 1 неделя.xlsx...

Аналогичные файлы в папке второй недели:
/2 неделя/файл1 - 2 неделя.xlsx
/2 неделя/файл2 - 2 неделя.xlsx
/2 неделя/файл3 - 2 неделя.xlsx...

Понятно что самый просто способ - запустить автозамену в сводном файле типа "1 неделя" на "2 неделя".

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

Отключение автоматического расчета в формулах не спасает. Открытие всех файлов одновременно тоже.
Замена связей через стандартные способы длится еще дольше так как одновременно меняется всего 1 файл. То есть еще в 10 раз дольше.

Как вы думаете, это можно обойти как-то? Может через макрос?
mrMad-Cat вне форума Ответить с цитированием
Старый 23.04.2013, 15:17   #2
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

ну, наверно, можно написать макрос, который будет собирать данные с файлов в текущей папке..

тогда переносите его в другую папку и он продолжает работать

точнее сказать сложно без примера
slan вне форума Ответить с цитированием
Старый 23.04.2013, 16:00   #3
BigDaddy
Пользователь
 
Регистрация: 23.11.2012
Сообщений: 45
По умолчанию

продолжая бороться с макросом...
попробуйте открыть оба файла - неделя1 и неделя2
тогда все формулы будут короткие, не будет указан путь, типа c:\***
и делайте автозамену неделя1 на неделя2
все будет в сто раз быстрее

можно также пользоваться не автозаменой (replace) а найти в меню "замену линков"
в английском экселе это в меню "data", дальше "edit links" - "change source"
лучше день потерять, а потом за пять минут долететь
BigDaddy вне форума Ответить с цитированием
Старый 23.04.2013, 20:26   #4
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

BigDaddy
Ну вот замену линков я ж говорю, лучше вообще не делать. она еще дольше так как работает полностью аналогично видать.

Возможно действительно нужно открывать ВСЕ файлы. Но учитывая что все они довольно увесистые 21 файл одновременно открыть довольно сложно на среднем компе в 2013 офисе. последний раз при попытке открыть сразу только 10 этих файлов у меня перезагрузился комп из-за сбоя видеодрайвера ))
mrMad-Cat вне форума Ответить с цитированием
Старый 23.04.2013, 20:26   #5
mrMad-Cat
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 33
По умолчанию

BigDaddy
Ну вот замену линков я ж говорю, лучше вообще не делать. она еще дольше так как работает полностью аналогично видать.

Возможно действительно нужно открывать ВСЕ файлы. Но учитывая что все они довольно увесистые 21 файл одновременно открыть довольно сложно на среднем компе в 2013 офисе. последний раз при попытке открыть сразу только 10 этих файлов у меня перезагрузился комп из-за сбоя видеодрайвера ))
mrMad-Cat вне форума Ответить с цитированием
Старый 24.04.2013, 12:16   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Используйте формулы массива. Например, выделите диапазон А1:А500, введите формулу типа
Код:
=[ДругойФайл.xlsx]Лист1!A1:A500
, нажмите Ctrl+Shift+Enter. Формула будет отображаться в фигурных скобках.
Это будет ОДНА формула для 500 ячеек, так что при изменении формулы обращение к другому файлу произойдет ОДИН раз, а не 500 раз.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовая замена строк. MrAnymage Microsoft Office Access 3 08.02.2011 20:59
Массовая замена Rossoman Microsoft Office Word 12 14.05.2010 00:32
Массовая замена аргументов kzld Microsoft Office Excel 8 07.02.2010 17:57
Вопрос по запросу на иморт внешних связей! Klim Bassenger Microsoft Office Excel 0 25.05.2009 13:41
Обновление внешних связей Григорьев Игорь Microsoft Office Excel 12 10.11.2008 11:33