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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 15:02   #1
ЦЕРЦЕЯ
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 31
По умолчанию замена формул

Здравствуйте,может быть задам глупый вопрос, но скажите как можно быстро перетащить все формулы под себя т.е. мне скинули файл с формулами, эти формулы обращаются к другому компьютору, а мне надо,чтоб к моему.Все необходимые данные у меня для создания такой же формулы,есть и я могу это сделать,только как их поменять автоматически, ??? а не в каждой ячейке отдельно. Спасибо.
ЦЕРЦЕЯ вне форума Ответить с цитированием
Старый 03.03.2010, 15:27   #2
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Данные - изменить связи...
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 03.03.2010, 15:47   #3
ЦЕРЦЕЯ
Пользователь
 
Регистрация: 18.11.2009
Сообщений: 31
По умолчанию

спасибо попробую
ЦЕРЦЕЯ вне форума Ответить с цитированием
Старый 22.05.2012, 17:43   #4
ratibor
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 42
По умолчанию

Подскажите, пожалуйста.
Есть вот такой код:
Цитата:
Option Explicit

Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If [c7] <> numb Then
[F:W].Replace "[*.xlsm]", "[" & [c7] & ".xlsm]": numb = [c7]
End If
If [c6] = "Ïëàí" Then
[F:G].Replace "!G", "!F"
[J:K].Replace "!K", "!J"
[N:O].Replace "!O", "!N"
[R:S].Replace "!S", "!R"
[V:W].Replace "!W", "!V"
End If
If [c6] = "Ôàêò" Then
[F:G].Replace "!F", "!G"
[J:K].Replace "!J", "!K"
[N:O].Replace "!N", "!O"
[R:S].Replace "!R", "!S"
[V:W].Replace "!V", "!W"
End If
Application.EnableEvents = True
End Sub
при 6000 формул, замена происходит за 25 минут. Возможно ли ускорить процесс?
ratibor вне форума Ответить с цитированием
Старый 22.05.2012, 17:52   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Зачем на каждый пересчёт заменять формулы?
Кажется не в том коде замену делаете.
Ну и думаю, вместо (или с, если там ещё и на события что-то навешано) Application.EnableEvents = False/True нужно отключать/включать пересчёт и обновление экрана:

Код:
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
...
...
...
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.05.2012, 09:40   #6
ratibor
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Зачем на каждый пересчёт заменять формулы?
Кажется не в том коде замену делаете.
есть формулы вида: =[5.xlsm]Лист1'!G26,
есть выпадающие списки, где выбирается предприятие и в зависимости от этого меняется номер в ячейке С7 (1-13), который заменяется в формуле на соответствующий номер файла (1.xlsm, 2.xlsm....13.xlsm), а при выборе из выпадающего списка Плана или Факта (ячейка С6) в формуле происходит замена столбца. Такая сводная таблица по предприятию и план/факту. На небольших таблицах работает быстро, а вот на больших "тормозит". Может я что-то перемудрил в коде, тогда, пожалуйста, подскажите мне где ошибка?
ratibor вне форума Ответить с цитированием
Старый 23.05.2012, 10:08   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Делайте эту замену по событию изменения этой конкретной ячейки, а не на каждый пересчёт листа.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.05.2012, 10:12   #8
ratibor
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Делайте эту замену по событию изменения этой конкретной ячейки, а не на каждый пересчёт листа.
Как я понимаю, то через

Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub
???
ratibor вне форума Ответить с цитированием
Старый 23.05.2012, 10:43   #9
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да.
Анализируете target, если она что нужно (и только она одна), то отключаете события, пересчёт, меняете формулы, включаете всё назад.
Если контролируемые ячейки две, и с разными заменами - ставьте в одну процедуру одно под другим - выполняться ведь будет одно из условий.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.05.2012, 10:47   #10
ratibor
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Да.
Анализируете target, если она что нужно (и только она одна), то отключаете события, пересчёт, меняете формулы, включаете всё назад.
Если контролируемые ячейки две, и с разными заменами - ставьте в одну процедуру одно под другим - выполняться ведь будет одно из условий.
Понял. Спасибо большое Hugo121. Буду пробовать.
ratibor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка формул bsa785 Microsoft Office Excel 6 28.01.2010 21:24
Сравнение формул Acharia Microsoft Office Excel 13 15.07.2009 17:33
Преобразователь формул TripleX Фриланс 6 14.04.2009 16:57
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52
Вывод формул Влажимир Общие вопросы Delphi 7 10.03.2008 16:21