Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/VBA как использовать все ресурсы системы? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA как использовать все ресурсы системы? (Макросы/Sub)
VBA как использовать все ресурсы системы?
HiHiMAX Дата: Четверг, 25.08.2016, 22:34 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Всем Привет
У меня в таблице более 400к строк и много столбцов.
Выполняю некоторые вычисления, используя данные со всех строк. Это занимает много времени, хотелось бы ускориться)
Попробовал считать через формулы Excel, используя суммпроизв и формулы массивов - при этом считает довольно быстро 100строк обсчитввает за ~1мин.
При этом все процессоры загружены на 100%.
Такие же вычисления через самописную функцию требуют уже 10мин, и при этом процессоры загружены всего на 12-14%.

Автовычиления отключены.

В Excel 2010 в меню Файл - Параметры - Дополнительно можно поставить галочку "включить многопоточные вычисления" и "использовать все процессоры данного компьютера:
Возможно также можно настроить и VBA? Подскажите, кто знает, как увеличить скорость вычислений.
 
Ответить
СообщениеВсем Привет
У меня в таблице более 400к строк и много столбцов.
Выполняю некоторые вычисления, используя данные со всех строк. Это занимает много времени, хотелось бы ускориться)
Попробовал считать через формулы Excel, используя суммпроизв и формулы массивов - при этом считает довольно быстро 100строк обсчитввает за ~1мин.
При этом все процессоры загружены на 100%.
Такие же вычисления через самописную функцию требуют уже 10мин, и при этом процессоры загружены всего на 12-14%.

Автовычиления отключены.

В Excel 2010 в меню Файл - Параметры - Дополнительно можно поставить галочку "включить многопоточные вычисления" и "использовать все процессоры данного компьютера:
Возможно также можно настроить и VBA? Подскажите, кто знает, как увеличить скорость вычислений.

Автор - HiHiMAX
Дата добавления - 25.08.2016 в 22:34
buchlotnik Дата: Четверг, 25.08.2016, 23:18 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
HiHiMAX, здравствуйте. Вы бы для начала код выложили - проще будет понять причины тормозов
 
Ответить
СообщениеHiHiMAX, здравствуйте. Вы бы для начала код выложили - проще будет понять причины тормозов

Автор - buchlotnik
Дата добавления - 25.08.2016 в 23:18
KuklP Дата: Четверг, 25.08.2016, 23:29 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Возможно также можно настроить и VBA?
Нет. ВБА не работает многопоточно.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Возможно также можно настроить и VBA?
Нет. ВБА не работает многопоточно.

Автор - KuklP
Дата добавления - 25.08.2016 в 23:29
HiHiMAX Дата: Четверг, 25.08.2016, 23:50 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Нет. ВБА не работает многопоточно.

это оч медленно(
остаются встроенные функции excel.
С таким способом вычислений тоже есть проблема: хотя считает относительно быстро, но при попытке сохранить только значения Excel сильно тупит... такое ощущение что повторно начинает пересчитывать формулы, а это считай в 2 раза увеличение времени.
Может кто подсказать с чем это может быть связано?


Вы бы для начала код выложили - проще будет понять причины тормозов

форум почему-то не дает вставлять код, пишет что превышено число символов
 
Ответить
Сообщение
Нет. ВБА не работает многопоточно.

это оч медленно(
остаются встроенные функции excel.
С таким способом вычислений тоже есть проблема: хотя считает относительно быстро, но при попытке сохранить только значения Excel сильно тупит... такое ощущение что повторно начинает пересчитывать формулы, а это считай в 2 раза увеличение времени.
Может кто подсказать с чем это может быть связано?


Вы бы для начала код выложили - проще будет понять причины тормозов

форум почему-то не дает вставлять код, пишет что превышено число символов

Автор - HiHiMAX
Дата добавления - 25.08.2016 в 23:50
buchlotnik Дата: Пятница, 26.08.2016, 00:00 | Сообщение № 5
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
не дает вставлять код,
так прикрепите в файле.
Цитата
при попытке сохранить только значения
вот-вот - покажите как присвоение значений реализовано
Цитата
с чем это может быть связано?
наиболее вероятно с выгрузкой массивов из памяти


Сообщение отредактировал buchlotnik - Пятница, 26.08.2016, 00:11
 
Ответить
Сообщение
Цитата
не дает вставлять код,
так прикрепите в файле.
Цитата
при попытке сохранить только значения
вот-вот - покажите как присвоение значений реализовано
Цитата
с чем это может быть связано?
наиболее вероятно с выгрузкой массивов из памяти

Автор - buchlotnik
Дата добавления - 26.08.2016 в 00:00
HiHiMAX Дата: Пятница, 26.08.2016, 00:10 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
так прикрепите в файле.

файл на скрепке

как присвоение значений реализовано

если говорить о встроенных формулах, то например такая
Код
=ЕСЛИ(AM55="Flat";СУММПРОИЗВ(($S$47:S54=S55)*($F$47:F54=F55)*($AF$47:AF54>=AF55-20)*($AF$47:AF54<=AF55+20)*($I$47:I54="Flat")*(ЕЧИСЛО($BM$47:BM54)));0)

или с массивами
Код
=ЕСЛИ(AM55="Flat";МЕДИАНА(ЕСЛИ(($S$47:S54=S55)*($F$47:F54=F55)*($AF$47:AF54>=AF55-20)*($AF$47:AF54<=AF55+20)*($I$47:I54="Flat")*(ЕЧИСЛО($BM$47:BM54));$BZ$47:BZ54));0)
К сообщению приложен файл: 0258545.txt (4.3 Kb)
 
Ответить
Сообщение
так прикрепите в файле.

файл на скрепке

как присвоение значений реализовано

если говорить о встроенных формулах, то например такая
Код
=ЕСЛИ(AM55="Flat";СУММПРОИЗВ(($S$47:S54=S55)*($F$47:F54=F55)*($AF$47:AF54>=AF55-20)*($AF$47:AF54<=AF55+20)*($I$47:I54="Flat")*(ЕЧИСЛО($BM$47:BM54)));0)

или с массивами
Код
=ЕСЛИ(AM55="Flat";МЕДИАНА(ЕСЛИ(($S$47:S54=S55)*($F$47:F54=F55)*($AF$47:AF54>=AF55-20)*($AF$47:AF54<=AF55+20)*($I$47:I54="Flat")*(ЕЧИСЛО($BM$47:BM54));$BZ$47:BZ54));0)

Автор - HiHiMAX
Дата добавления - 26.08.2016 в 00:10
buchlotnik Дата: Пятница, 26.08.2016, 00:27 | Сообщение № 7
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
нормального (*.xls*) файла не дождались... тогда тупой вопрос - "а чё надо-то?" (подразумевает ответ в виде файла с исходной структурой данных и наличия необходимого результата)
 
Ответить
Сообщениенормального (*.xls*) файла не дождались... тогда тупой вопрос - "а чё надо-то?" (подразумевает ответ в виде файла с исходной структурой данных и наличия необходимого результата)

Автор - buchlotnik
Дата добавления - 26.08.2016 в 00:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » VBA как использовать все ресурсы системы? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!