|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.09.2009, 18:13 | #1 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Как ускорить расчеты формул???
Пожалуйста, помогите оптимизировать формулы или перевести их в макросы!!!
Суть проблемы: Есть массив данных по продажам, кусок которого приведен в прикрепленном примере. Задача - в этом массиве вычислить клиентов, которые сделали отгрузку, соответствующую заданному условию (на листе "Условия"). То есть клиент должен взять три вида товара не менее двух штук каждого вида за установленный период. Для этого есть 7 формул, которые вычисляют эту самую отгрузку, а именно: 1 формула. Определяет отгрузку 1 клиента в месяц (сцепляет 2 значения) 2. Определяет отгрузку 1 вида товара по 1 клиенту в месяц (сцепляет 3 значения) 3. Вычисляет по массиву, соответствует ли вид, канал сбыта и период условиям 4. Определяет, соответствует ли накопленная отгрузка каждого учитываемого вида товара минимальной выборке и отсекает повторения учета (то есть учитывается только 1 раз) 5. Учитывает каждый сработавший вид товара 6. Определяет кол-во видов товара, выбранного 1 клиентом и отсекает повторения учета (то есть учитывается только 1 раз) 7. Учитывает клиента, сработавшего по установленным условиям. Ну соответственно обработка массива осуществляется макросом, который копирует формулу из 2 строки по столбцу и вычисляет значения. Проблема состоит в том, что при массиве в 1000 строк макрос пару секунд, при массиве в 5000 строк - 5 минут, в 10 000 строк - 15 минут, а при массиве в 15 000 строк зависает из-за вычисления накопительных формул... Помогите, как-нибудь решить эту проблему? Может как-то можно оптимизировать формулы или сделать аналогичные вычисления макросом? |
01.09.2009, 18:19 | #2 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
А сам код макроса где?
|
01.09.2009, 21:18 | #3 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Motorway я прикрепил пример с макросом, но повторюсь: мне кажется, суть проблемы в формуле, а не в макросе... Макрос просто же копирует эту формулу...
|
01.09.2009, 21:30 | #4 |
Участник клуба
Регистрация: 10.08.2009
Сообщений: 1,796
|
Здравствуйте Иванов_ДМ.
работа с таблицами в 1000 строк это повод думать про Базы Данных, а Вы говорите о 15 000. Задача может быть выполнена и в Excel, но но стоит ли сооружать конструкцию с возможностями близкими к граничным для него. Евгений. |
01.09.2009, 21:49 | #5 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
Евгений, спасибо за совет, но что имеем так сказать... увы, иных вариантов обработки такого массива у меня нет... Да и границы excel гораздо шире, чем кажутся со стороны.
|
01.09.2009, 22:18 | #6 |
Участник клуба
Регистрация: 28.06.2009
Сообщений: 1,950
|
Не знаю, поможет или нет, можно вставить строку: Application.Calculation = xlCalculationManual, а в конце Application.Calculation = xlCalculationAutomatic
|
02.09.2009, 04:53 | #7 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Предлагаю вообще не использовать формулы. Все делать макросом (если, конечно, такой вариант приемлем). При этом скорость существенно увеличится (в десятки или сотни раз).
Чем шире угол зрения, тем он тупее.
|
|
02.09.2009, 09:53 | #8 |
Пользователь
Регистрация: 17.02.2009
Сообщений: 96
|
SAS888 вот вариант с макросом вместо формул как раз и приемлем!
Вопрос в том - как это сделать макросом? Моих знаний в этом случае не хватает... |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как ускорить программу ? | juan666777 | Общие вопросы Delphi | 2 | 02.05.2009 19:48 |
Как ускорить работу программы | SibBear | Общие вопросы Delphi | 7 | 27.03.2009 14:40 |
Платформы и расчеты | Kenshi25 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 1 | 29.12.2008 11:43 |
Как ускорить работу с сетевой БД | Ramires | БД в Delphi | 3 | 21.08.2008 12:16 |
Как ускорить выполнение макросов | tat-besidovska | Microsoft Office Excel | 1 | 22.01.2008 12:12 |