Как ускорить вычисления в excel

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

Замечаний:
0% ±


Excel 2013

Всем привет и хорошего настроения!

Захотелось перевести статью с одного из зарубежных форумов. Ссылка на оригинал. Не со всем в статье согласен, но старался держаться основной линии автора. Возможно, кому-то будет интересно.
**************

10 СОВЕТОВ КАК УЛУЧШИТЬ РАБОТУ ФОРМУЛ В EXCEL

1). Используйте таблицы для хранения данных.

Начиная с Excel 2007 можно держать связанные друг с другом данные в таблицах (Преобразование данных: «Главная» — «Стили» — «Форматировать как таблицу»). К данным в таблицах можно обращаться формулами с помощью структурных ссылок. Также данные таких таблиц можно использовать как источник для сводных таблиц. Если Вы меняете количество строк в таблице — формулы по столбцам автоматически становятся динамическими. Например, если у Вас есть таблица «Sales», то можно собрать сумму по столбцу «Turn_Over» просто введя формулу:

Код

=СУММ(Sales[Turn_Over])

Формула будет работать корректно даже если в таблице уменьшилось или увеличилось количество строк.

На заметку: в 2003-м Excel есть аналог таблиц (Exel lists).

2). Используйте именованные диапазоны и формулы.

Используя именованные диапазоны и формулы Вы упростите восприятие вычислений. Более того, есть возможность провести промежуточные расчеты один раз в именованной функции вместо того, чтобы рассчитывать их отдельно для каждой ячейки. Это снимет часть вычислительной нагрузки и ускорит работу книги Excel.

3). Используйте сводные таблицы.

Бывают случаи, когда формулы нам в принципе не нужны, но мы их используем просто потому, что можем. Но разве не проще использовать сводную таблицу, где множество итогов можно получить всего в несколько кликов мышью? После построения сводной таблицы, можно ссылаться на её значения с помощью формулы ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ или простыми ссылками на её ячейки. Это избавит от необходимости выполнять необязательные вычисления. Если данные меняются, достаточно просто перейти на вкладку «Данные» и обновить все сводные в одно действие. Обновление пройдёт лучше, если исходные данные хранятся в формате таблиц.

Часто причиной медленной работы книги Excel бывает большой объём данных. И сводные таблицы были разработаны именно для того, чтобы обрабатывать большие массивы информации.

4). Сортируйте данные.

Ещё одна причина не ахти какой скорости — попытки что-то найти в куче НЕ отсортированных данных. У Excel нет выбора и ему приходится искать иголку в стоге сена. Очень часто мы получаем НЕ сортированные данные из разных источников. Отсортировав данные и использовав корректное операторы в поисковых формулах можно значительно ускорить работу книги. Если сортировать что-то приходиться регулярно — можно запустить простейший макрос сразу, как только данные обновлены.

5). Вычисление книги вручную.

Скорость — это суровая плата за сложность структуры и обилие возможностей. Одна из таких возможностей — моментальное отражение проведённых в файле изменений на результатах вычислений. Но для корректной работы книги нам далеко не всегда нужно, чтобы проходила цепочка вычислений после каждого нажатия. Зачастую, вполне достаточно переключить расчёт формул в ручной режим и проводить вычисления когда это действительно требуется. Это можно сделать, например, нажатием клавиши F9. Обратите внимание, что Excel проходит по формулам каждый раз, когда Вы сохраняете файл.

6). Старайтесь отказываться от волатильных формул.

В Excel существует особый класс формул — волатильные формулы. Они пересчитываются при ЛЮБОМ изменении в книге. Примером волатильных формул служат: СЛЧИС, СЕГОДНЯ, ТДАТА, СМЕЩ и т.д. И если лист содержит множество волатильных формул, при малейшем изменении эти формулы должны быть пересчитаны. Что сверх необходимого нагружает лист вычислениями.

Что делать? Просто откажитесь от волатильных формул. Например, чем использовать СМЕЩ для построения динамического диапазона — задействуйте ИНДЕКС. Как НЕ волатильная формула он должен работать быстрее. А ещё лучше — используйте таблицы.

7). Держите формулы на отдельном листе.

Формулы — движущая сила любой Excel книги или модели. Собрав их на отдельном листе (или нескольких), Вы уменьшите вероятность ошибок, пробелов или повторов. Работа над ускорением файла становится элементарной задачей, когда все формулы собраны в одном месте. Плюс это придаёт файлу шарм структурности и организованности.

8). Пишите хорошие формулы.

Вот несколько советов, на которые можно ориентироваться:

— Встроенные формулы удобнее Ваших собственных. Например, СУММЕСЛИМН проще заполняется аргументами и такая же быстрая, как СУММПРОИЗВ.
— Не тратьте силы Excel на работу с целым столбцом, когда требуется всего несколько значений. Не стоит писать СУММ(A:A), когда заведомо известно, что значения будут в диапазоне А1:А10.
— Используйте ЕСЛИОШИБКА для обработки ошибок вместо усложненных конструкций типа ЕСЛИ(ЕОШИБКА())
— Уберите или исправьте ошибки формул (деление на ноль, ошибки имени и т.д.).
— Уберите или сократите использование массивных формул.
— Удалите совсем или уменьшите количество ссылок на другие книги.
— Удалите любые именованные диапазоны, которые выдают ошибку или несуществующие ссылки.
— Старайтесь использовать альтернативные формулы. Это не только отточит ум, но и позволит находить интересные решения.
— Не рассчитывайте цифры, которые Вам не нужны.
— Не считайте что-либо дважды, а лучше используйте первый результат во втором вычислении.

9). Суровые времена требуют суровых мер.

Иногда, что бы Вы не делали, скорость книги всё равно оставляет желать лучшего. Ниже несколько жестких решений:

— Замена формул на значения. Сохраните формулы отдельно (или только в первой строке данных), Ctrl+C, Ctrl+Alt+V, только значения и форматы чисел.
— Сборка книги с нуля. Позволяет выбросить всё лишнее, о чём даже нельзя было догадаться.
— Замените внешние ссылки на данные собственно актуальными данными. При необходимости импортируйте данные методом копи-пасты.
— Уменьшите функциональность. Ведь пользователь наверняка как-нибудь проживет без пары-другой фишек, верно?
— Найдите альтернативное решение. Пытаться сделать в Excel абсолютно всё — глупо. Зачем копать молотком, если есть лопата? Проверьте, вдруг есть какой другой инструмент, который делает то же самое лучше и быстрее.

10). Узнавайте новые формулы и играйте с ними.

Оптимизация — вещь не определённая, до конца не регламентированная. Это продолжительный, развивающийся процесс. Всегда нужно учить новые формулы, новые применения и играть с ними. И через это откроются новые способы улучшить тормозящие книги.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranЧетверг, 30.04.2015, 11:28

Excel is a fairly an efficient software given that it can perform complex calculations. However, depending on your system, it can also get pretty slow when running complicated calculations. How formulas are used, and size of the workbook are typically the culprit if your workbook takes minutes to calculate. In this guide we’re going to show you how to make Excel calculate faster.

Try using «faster formulas»

Not all formulas are created equal, and some of them simply run slower than the others. Some functions can do what another function can much faster. Of course, the performance gain will be different from one scenario to the other — we will offer some advise on which functions could prove faster than others.

Typically, complexity and calculation times are inversely proportional. For example, using the SUMIFS function instead of SUMPRODUCT or SUM functions in an array formula can yield better results. Similarly, SUMIF function can be significantly faster than SUMIFS. However, we do not suggest using SUMIF unless necessary.

Another cool trick here is using two approximate VLOOKUPs instead of a single exact VLOOKUP. For more tips about lookup functions, please see How to speed up lookup formulas.

Overall, prefer using simpler formulas and helper columns instead of one big formula!

A final tip: if you are using a formula like =IF(A1>0,A1,0), you can use something like =MAX(A1,0) for better performance.

Avoid volatile formulas

Excel is smart, and calculates only dependent cells when you make changes to a cell. However, some of functions are calculated doesn’t follow the same logic — They are calculated every time. Thus, they have an impact on calculation times.

If your workbook suffers from substantial performance losses, we advise avoiding them as much as you can. Here is a list of the functions you might want to avoid:

  • NOW()
  • TODAY()
  • RAND()
  • RANDBETWEEN()
  • OFFSET()
  • INDIRECT()
  • INFO() (depending on its arguments)
  • CELL() (depending on its arguments)

You can learn more about volatile functions in our article: Handle With Care: Volatile Functions in Excel

Avoid large ranges

A larger range means more cells to be evaluated, and more cells means more places to process. This element also has an impact on calculation times, and it might be a good idea to check the ranges used in formulas. Although selecting a whole column is easier than selecting a range, prefer using ranges for best results and avoid empty cells at the end of your work area.

Replace formulas with values

This might sound obvious, but it’s always good to double-check the ranges used in formulas. In a complex workbook some range may contain formulated data not updated by any input. Making them static removes them calculation chain of Excel. This may reduce file size and speed opening and saving times up.

Avoid conditional formatting

Conditional formatting can substantially enhance the user experience. So, you should use formatting features. On the other hand, formatting is not needed for the calculations. Try to remove the conditional formatting rules for performance gain.

Decrease the number of worksheets

Excel calculates a workbook faster if data and formulas reside in the same worksheet. Try using fewer worksheets in your workbook!

Use multi-threaded calculation

The chances are, you are already using multi-thread calculations in Excel. Multi-thread calculation means using multiple processor cores for Excel calculations. This option has a significant effect on Excel performance. To check your settings, follow the path: File > Options > Advanced > Formulas Section and make sure that the Enable multi-threaded calculation option is checked.

Use 64bit version of Excel

If you have Office 365 and a relatively new system, you may already have the 64bit version. If you have 2016 or earlier, 32bit is the default. Check your system and if you are using a 64bit processor, do not hesitate to update your Excel with its 64bit counterpart.

Microsoft states that 64bit requires a lot more memory and power to run. On the other hand, it is significantly faster when it comes to calculating large data sets.

Your time is precious and Excel shouldn’t be adding to your stress, but now you know how to make Excel calculate faster!

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

Уважаемые господа, добрый день!

Вопрос следующий.
Я создал файл excel, в нем около 30 листов данных и 15 сводных таблиц и около 10 макросов.  
На каждом листе есть одна таблица. Размеры таблиц от 20 до 250 столбцов и от 100 до 5  000 строк.
В каждой таблице примерно каждый 5-й столбец имеет формулы на всю длину таблицы, и в большинстве случаев ссылки на другие листы. Основная формула ЕСЛИ(IF) и ВПР (VLOOKUP), но чаще она входит в состав других формул. Также есть много формул для работы с текстом. TRIM, TEXT, и с датами — преобразование даты в год неделю месяц и т. д. Есть немного выпадающих списков.
Все это я сделал в основном на основании видеоуроков с этого сайта и Вашего форума. Спасибо огромное Николаю, и всем участникам!
Единственный макрос который я очень люблю и нашел на другом сайте — это СЦЕПИТЬЕСЛИ. То есть по условию сцепляет текст. Очень нужная функция. Простыми инструментами эксель я не нашел как сделать…

Но вопрос в другом.
Данные в мой файл только добавляются! Сейчас он весит уже около 30 мб. Я уже давно отключил автоматический пересчет. Но и сейчас с пересчетом вручную он нереально тормозит!!! У меня процессор Intel Core i7-4790K и 16 Гб оперативы. Куда мощнее я не знаю. Но с файлом невозможно работать. Бывает когда я внесу данные мой файл пересчитывается около 30 минут. Так работать невозможно!

ЕСТЬ ЛИ ВЫХОД ИЗ ЭТОЙ СИТУАЦИИ? Или просто возможности эксель ограничены и он дальше не вывозит.

P/s/ Пробовал разбить листы на разные файлы, но только хуже. Вернул обратно.
Мне кажется что причина в бесконечных и постоянно активных формулах.
Если бы на всех листах были только значения, наверное эту проблему можно решить.

Но я попробовал написать макрос (с помощью кнопки «запись»), по другому к сожалению не умею, в макросе была вставлена формула — пересчет — и в конце вставить значения. Вроде вставить только значения получилось, но этот макрос работает около 1 часа. Работать также невозможно…

 

PowerBoy

Пользователь

Сообщений: 141
Регистрация: 13.01.2014

Переведите все на 1С. Но кто нибудь посоветует Вам Access  :) .

Excel + SQL = Activetables

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

А может SQL. Я не очень силен в этом. Прочитал про него в википедии. Ни разу не работал.

А что значить «переведите все на 1С.» не понял. Прошу прокомментировать.

 

PowerBoy

Пользователь

Сообщений: 141
Регистрация: 13.01.2014

#4

13.07.2015 13:05:51

Цитата
Oleg777 написал: А что значить «переведите все на 1С.» не понял

Платформа для быстрой разработки бизнес приложений фирмы 1С.

http://v8.1c.ru/overview/Platform.htm

. Я считаю, что легче и быстрее сделать на нем чем на access.

Excel + SQL = Activetables

 

Пытливый

Пользователь

Сообщений: 4587
Регистрация: 22.12.2012

15 сводных таблиц — это 15 дополнительных областей оперативки, где содержатся данные для каждой конкретной сводной. М.Б. как-то обойтись одной, но изменять ее источник для получения нужных отчетных данных?
Еще можно попробовать поудалять не занятые данными строки/столбцы на каждом листе (чтобы исключить их из рабочей области листа, т.к. если вы даже случайно перескакивали в последнюю строку/столбец листа при занесении данных, чего-то туда вбивали, потом сразу удаляли — все эти строки включены в состав рабочей области). Надо тупо выделить строки от последней строки с данными до последней строки на листе и через ПКМ — удалить. Тоже самое со столбцами.
Еще вариант — если данные поступали из разных файлов, то возможно накапливание излишнего количества стилей ячеек в файле (на эту тему есть статья в разделе приемы, и способы устранения в ней описаны).
По поводу оптимизации формул — не знаю, ибо не видя их не посоветуешь.

Сейчас наши корифеи более точно подскажут, а пока — чем могу, так сказать… :)

Кому решение нужно — тот пример и рисует.

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

ВПР по неотсортированным данным с точным поиском — медленный, конечно.
много-много таких ВПР-ов способны делать чудеса.

я не знаю общих рекомендаций, способных кардинально улучшить ситуацию.
как правило — смотреть надо конкретно.
менять структуру данных, упрощать формулы, минимизировать (или совсем убирать) УФ, использовать сортировку, формулы заменять на макросы, медленные макросы заменять на правильные…

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

PowerBoy

Пользователь

Сообщений: 141
Регистрация: 13.01.2014

Если хотите оставить в Excel.
1.Каждый лист в отдельную книгу.
2.Каждый отчет в отдельную книгу.
3.Никаких формул, все данные собирать макросами.(SQL запросами)

Excel + SQL = Activetables

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

#8

13.07.2015 13:17:25

Цитата
PowerBoy написал: 3.Никаких формул, все данные собирать макросами.(SQL запросами)

Спасибо всем огромное.
Это получиться как аналог запросов в Access? Вообще без формул? Запрос запустил и в таблице появляются значения. Это очень круто! Мне кажется это может сильно улучшить ситуацию.

А можно один пример такого SQL запроса на макросах.

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

#9

13.07.2015 13:26:15

Цитата
Пытливый написал:  М.Б. как-то обойтись одной [сводной], но изменять ее источник для получения нужных отчетных данных?

Я ищу от ПК, будь то excel (как сейчас или что то другое), максимального решения своих задач. Каждый раз менять представление отчета из сводной таблицы — это гемор. А так я зашел на нужный лист, обновил, и сразу печатаю. Это намного продуктивней.

Цитата
[USER=92]Еще можно попробовать поудалять не занятые данными строки/столбцы на каждом листе… выделить строки от последней строки с данными до последней строки на листе и через ПКМ — удалить. Тоже самое со столбцами.

Я работаю с форматом таблицы. И в «белые» поля, куда не распространяется область таблицы значения не вношу. Только в формате таблицы у меня заполненных около 5 000 строк… Или я что то неправильно понял?

Цитата
[USER=92]По поводу оптимизации формул — не знаю, ибо не видя их не посоветуешь.

Обычная моя формула = IF(A7=0;VLOOKUP(…);VLOOKUP(…)) — и это одна из самых простых. Они мне такие нужны, для моей задачи. Но конечно оптимизация процесс бесконечный. Буду работать над этим. Спасибо!

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

#10

13.07.2015 13:39:20

Цитата
ikki написал: много-много таких ВПР-ов способны делать чудеса.

Это точно!!! И еще ЕСЛИ (IF). И чудеса это мягко сказано. Они могут помочь максимально исключить человеческий фактор. Простейшая форма ИИ, если так можно сказать.)))

Цитата
я не знаю общих рекомендаций, способных кардинально улучшить ситуацию.

Жаль конечно! А может можно в другой какой-нибудь программе работать? А excel использовать как средство выхода данных??? Как это во многих современных программах устроено? Но как этого добиться, я не знаю. Трудиться готов!!! Не знаю дорогу, которой нужно идти!!! Поэтому к Вам за советом и пришел.

Може какой нибудь SQL server express?

Цитата
менять структуру данных, упрощать формулы, минимизировать (или совсем убирать) УФ, использовать сортировку, формулы заменять на макросы, медленные макросы заменять на правильные…

Мне кажется это все «таблетки», а не решение причины болезни, т.к. это сейчас 5 000 строк, а через год будет 20 000…

Вот формулы заменить на макросы — хорошая идея. Но я этого не умею делать к сожалению…

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#11

13.07.2015 13:52:33

Цитата
Oleg777 написал: Мне кажется это все «таблетки»

простой пример.
для того, чтобы найти значение в неотсортированном массиве из 1000 записей, нужно в худшем случае просмотреть все 1000, в среднем — 500.
в отсортированном — в худшем случае логарифм по основанию 2 от 1000 = 10 записей.
при увеличении до 100000 — соответственно 100000, 50000 и 17.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

#12

13.07.2015 13:55:16

Тогда я Вас не понял…
А что значит вся эта фраза?)))

Цитата
ikki написал: в отсортированном — в худшем случае логарифм по основанию 2 от 1000 = 10 записей.
 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#13

13.07.2015 13:57:55

Цитата
Oleg777 написал: что значит вся эта фраза?

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

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

Я не понял как так сделать чтобы ВПР при поиске просматривал не 1000 записей, а 10???)))

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

массив должен быть отсортирован по возрастанию того столбца, в котором ВПР ищет значение.
последним параметом ВПР должно быть ЛОЖЬ
один нюанс — если у Вас нет уверенности, что искомое значение обязательно есть в таблице, то нужна дополнительная проверка с ВПР по первому столбцу (т.е. два ВПР-а)

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

в файле.

хотя…
я согласен — для 30Мб+ конечно, нужно искать более комплексные решения

Изменено: ikki13.07.2015 16:11:10

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Oleg777

Пользователь

Сообщений: 8
Регистрация: 03.07.2015

Спасибо, за ответ!
Подскажите про SQL server express и SQl запрос для Экселя? Стоит ли этим пользоваться для решения моей задачи и если да, то как???

Изменено: Oleg77713.07.2015 16:10:13
(Изменение сообщения собеседником.)

 

PowerBoy

Пользователь

Сообщений: 141
Регистрация: 13.01.2014

#18

13.07.2015 14:30:48

Вот пример SQL запроса из той же книги:

Код
Public Sub RefreshData()'Created using add-in ActiveTables
Dim strConnection As String
Dim strSQL As String
strConnection = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=3';", "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=YES;IMEX=3';")
strSQL = "select 1 as Mes,* from [Jan$] union all select 2 as Mes,* from [Feb$] union all select 3 as Mes,* from [Mar$]"
With ThisWorkbook.Sheets("Itog")
 .UsedRange.Clear
 With .QueryTables.Add(strConnection, .Range("A1"), strSQL)
 .Refresh False
 .Delete
 End With
End With
End Sub

Excel + SQL = Activetables

  • Remove From My Forums
  • Вопрос

  • можно ли ускорить пересчет формул в Excel, задействовав больше ресурсов оперативной памяти? В настоящий момент Excel использует 3,5 Gb оперативной памяти при установленных
    16. Можно ли задействовать больше памяти для Excel и как это сделать?

    • Изменено

      11 ноября 2015 г. 7:01
      уточнение вопроса?

Ответы

  • Типично нельзя.

    Ведь программа использует столько памяти сколько нужно, больше ей использовать не за чем. Вот если бы было больше данных, тогда нужно было бы больше памяти и она была бы использована.

    Конечно в для обработки большего числа данных нужно больше времени. Таким образом имеем парадокс — чем больше памяти использует программа тем медленнее она работает (в общем случае). 

    Таким образом если вы хотите чтоб перерасчет работал быстрее, то вам надо уменьшать объем используемой памяти, а не увеличивать его. Это несложно проверить — уберите например половину данных и расчет станет
    быстрее (причем может даже и более чем в два раза).

    Отсюда варианты: разбейте задачу на куски меньшего размера и считайте их по отдельности.


    This posting is provided «AS IS» with no warranties, and confers no rights.

    • Предложено в качестве ответа
      ЖукMVP, Moderator
      16 ноября 2015 г. 1:29
    • Помечено в качестве ответа
      ЖукMVP, Moderator
      20 ноября 2015 г. 2:47

-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

1

01.06.2019, 21:05. Показов 4511. Ответов 15


Студворк — интернет-сервис помощи студентам

Здравствуйте.
Есть файл, там более 1000 столбцов. Ведутся расчёты для специфических нужд.
Всего 3 строки. потом я буду эти 3 строки увеличивать до 30000, а может и больше. Поэтому скорость вычисления для меня очень медленная. Мне нужно чтобы за 1-5 сек всё вычислялось. Поэтому решил обратиться к специалистам VBA/
Возможно ли перенести вычисления в VBA, чтобы всё это мгновенно пересчитывалось?
Пример если надо я прикреплю по запросу.



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,143

01.06.2019, 22:20

2

Erolim,

Смотря какие вычисления…

Прикрепите файл … и скажите что нужно сделать…



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 01:16

 [ТС]

3

вот пример
Желательно всё что есть на листе перекинуть в VBA для того чтобы молниеносно вычислялось. Если это возможно.



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 02:35

 [ТС]

4

Или хотя бы часть формул , желательно где по 1000 столбцов, перевести в VBA.
В общем буду рад любому ускорению.



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

02.06.2019, 11:20

5

для того чтобы молниеносно вычислялось

Этого уж точно вряд ли можно добиться.
Всё зависит от объёма данных

Добавлено через 10 минут
две трети формул можно заменить значениями. Зачем каждый раз считать?
=BYD97+1



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

02.06.2019, 11:51

6

Или я что-то не понимаю, но зачем в формуле прописывать условие (тем самым усложняя формулу) если заранее известно что значения равны?!
Кстати на листе есть циклические ссылки. Но разбираться дальше не стал
По идее всё можно сделать макросом намного быстрей, но логику не понял

Миниатюры

Ускорить вычисление в Excel
 



0



Narimanych

2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,143

02.06.2019, 12:02

7

Erolim,

Один из вариантов ускорения- сбросить данные в массивы-обработать — вывести в таблицу.

В примере , который вы прикрепили:
1) Непонятно что где начинается и кончается ( выдран кусок строки без всякой логики)
2) В вашей книге, возможно , время тратится на обновления -при открытии книги.

Visual Basic
1
2
3
4
5
Private Sub Workbook_Open()
Application.DisplayAlerts = False
ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources(xlOLELinks))
'Application.DisplayAlerts = True
End Sub

Так что , чтобы рассчитывать на помощь необходимо:

Прислать пример в «читабельном» виде — хотя бы 3 строки таблицы, которая, в будущем увеличится до 30 000
Дать понять что у вас за линки.

Спасибо.



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 16:01

 [ТС]

8

Вот прикрепляю файл с 1000 строк точнее 2000. ещё одна 1000 нужна для вспоможения(перекидывания данных после предыдущего обновления)
Посмотрите внутри макрос «обновление». Он сначала первый диапазон обновляет, потом второй. если сразу всё будет циклическая ссылка.



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 16:05

 [ТС]

9

всё дело это обновляется за 11сек у меня. В идеале хотелось бы ускорить скорость вычисления в 1000раз. НО! я понимаю, и буду рад любому ускорению!



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,143

02.06.2019, 17:43

10

Erolim,

У меня ваш файл вообще не открывается….

Добавлено через 1 минуту
151 MB…..



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

02.06.2019, 17:45

11

Цитата
Сообщение от Erolim
Посмотреть сообщение

В идеале хотелось бы ускорить скорость вычисления в 1000раз

Думаю это возможно, но надо малость подождать, когда изобретут, например, квантовые процессоры.



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,143

02.06.2019, 17:46

12

Цитата
Сообщение от Narimanych
Посмотреть сообщение

Прислать пример в «читабельном» виде — хотя бы 3 строки таблицы

Как насчет этого?



0



1813 / 1135 / 346

Регистрация: 11.07.2014

Сообщений: 4,002

02.06.2019, 17:49

13

А у меня тоже не открывается, может переписать в формате xlsm или даже xls (не надо будет рарить), не думаю, что там есть какие-то сложности недоступные более низким версиям



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 18:01

 [ТС]

14

в каком читабельном виде? это и есть такой вид какой есть в файле.
не открывается. так подождите 10 минут и откроется.
Это файл для Excel 2010 и выше
xlsm вообще будет час открываться

Добавлено через 4 минуты
в самом первом примере всего 1+1 строка. тоже самое как и 1000+1000 строк.
посмотрите макрос внутри «обновление». посмотрите как расчитывает макрос. и Всё поймёте.
Прошу прощения. но объяснить словами реально не возможно. только если самим посмотреть на работу макроса который внутри файла и как там пересчитываются формулы.



0



2630 / 1636 / 744

Регистрация: 23.03.2015

Сообщений: 5,143

02.06.2019, 18:02

15

Цитата
Сообщение от Erolim
Посмотреть сообщение

в каком читабельном виде? это и есть такой вид какой есть в файле.
не открывается. так подождите 10 минут и откроется.

Thanks for suggestion….



0



-6 / 2 / 0

Регистрация: 26.09.2014

Сообщений: 274

02.06.2019, 19:51

 [ТС]

16

Alex77755, у вас получилось открыть файл? если да. то запускали макрос «обновление»?
видели как происходят вычисления, примерно поняли алгоритм?
а то вы задавали вопрос, «Или я что-то не понимаю, но зачем в формуле прописывать условие (тем самым усложняя формулу) если заранее известно что значения равны?!».
Тогда там значения будут не равны, а подставляться из нижней строки в выше.



0



Понравилась статья? Поделить с друзьями:
  • Как ускорить выполнение макроса в excel
  • Как ускорить впр в excel
  • Как ускорить ввод в excel
  • Как ускорить word 2019
  • Как ускорить microsoft word