![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]()
Доброго времени суток, Ув. Форумчане
В очередной раз пришел просить помощи и оригинальных идей. Вопрос состоит в том, что написал небольшой макрос, для уменьшения размера файла: Код:
Единственный способ стать умнее, играть с более умным противником...
|
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]()
в целом вроде быстро работает, но может кто подскажет как его еще быстрее сделать, или как правильнее его записать? В оригинале файла, еще есть столбцы с ВПР, Еслиошибка, сумм, суммпроизв.
Спасибо за внимание. С Ув. Станислав и забыл сказать, этот макрос хочу поставить на изменение событий листа
Единственный способ стать умнее, играть с более умным противником...
|
![]() |
![]() |
![]() |
#3 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
с таким макросом тормозов будет значительно больше, нежели с формулами
Какая разница, макрос пересчитывает значения, или формулы? Формулы быстрее всё вычислят, либо макрос нужно делать намного сложнее, чем то, что вы сделали (оптимизировать процесс расчётов) Зачем в таблице много столбцов с идентичными данными? Сколько весит файл? Формул-то немного, на размер файла не должно заметно влиять... Может, убрать из ячеек лишнее форматирование? Есть много способов уменьшения размера файла... |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
![]()
Общий принцип - загрузить значения диапазона в массив, работать с элементами массива, выгрузить обратно в диапазон. Получается примерно в 40 раз быстрее.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
![]() |
![]() |
![]() |
#5 | ||||||||||
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]() Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Единственный способ стать умнее, играть с более умным противником...
|
||||||||||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Попробуйте так:
Код:
Тогда массив (массивы) нужно делать только из нужных диапазонов, ну и соотв. править цифры.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 03.02.2012 в 13:01. Причина: мелочь поменял - но теперь есть толк в with :) но нет в activesheet :( |
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 05.07.2011
Сообщений: 208
|
![]()
А зачем все каждый раз пересчитывать?
Код:
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
![]()
Попробуйте. Предостережение: если внутри диапазона есть формулы, они будут заменены значениями.
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
![]() |
![]() |
![]() |
#9 | |||
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
![]() Цитата:
Спасибо! Цитата:
И кстати в это месте выдало ошибку Код:
Цитата:
Единственный способ стать умнее, играть с более умным противником...
|
|||
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Уменьшится, и скорость работы даже заметно не упадёт от бОльшего количества массивов, просто код будет чуть сложнее.
Делаете массив a из столбца А, массив c из столбца С. Затем a(i,1)= a(i,1)+c(i,1) Затем выгружаете массивы назад по местам. Столбец B остаётся с формулами.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замена формул макросом | Kot9ra | Microsoft Office Excel | 2 | 17.02.2011 08:26 |
Вычисление формул в MS Exel | toogull | Microsoft Office Excel | 6 | 04.12.2010 13:54 |
Работа с массивами, вычисление формул (assembler) | EmmyLy | Помощь студентам | 4 | 01.10.2010 09:55 |
Вычисление времени макросом | sasha_prof | Microsoft Office Excel | 4 | 02.04.2010 11:35 |