Группа: Авторы Ранг: Ветеран Сообщений: 903
Замечаний: |
Всем привет и хорошего настроения!
Захотелось перевести статью с одного из зарубежных форумов. Ссылка на оригинал. Не со всем в статье согласен, но старался держаться основной линии автора. Возможно, кому-то будет интересно.
**************
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 |
Уважаемые господа, добрый день! Вопрос следующий. Но вопрос в другом. ЕСТЬ ЛИ ВЫХОД ИЗ ЭТОЙ СИТУАЦИИ? Или просто возможности эксель ограничены и он дальше не вывозит. P/s/ Пробовал разбить листы на разные файлы, но только хуже. Вернул обратно. Но я попробовал написать макрос (с помощью кнопки «запись»), по другому к сожалению не умею, в макросе была вставлена формула — пересчет — и в конце вставить значения. Вроде вставить только значения получилось, но этот макрос работает около 1 часа. Работать также невозможно… |
PowerBoy Пользователь Сообщений: 141 |
Переведите все на 1С. Но кто нибудь посоветует Вам Access . Excel + SQL = Activetables |
Oleg777 Пользователь Сообщений: 8 |
А может SQL. Я не очень силен в этом. Прочитал про него в википедии. Ни разу не работал. А что значить «переведите все на 1С.» не понял. Прошу прокомментировать. |
PowerBoy Пользователь Сообщений: 141 |
#4 13.07.2015 13:05:51
Платформа для быстрой разработки бизнес приложений фирмы 1С. http://v8.1c.ru/overview/Platform.htm . Я считаю, что легче и быстрее сделать на нем чем на access. Excel + SQL = Activetables |
||
Пытливый Пользователь Сообщений: 4587 |
15 сводных таблиц — это 15 дополнительных областей оперативки, где содержатся данные для каждой конкретной сводной. М.Б. как-то обойтись одной, но изменять ее источник для получения нужных отчетных данных? Сейчас наши корифеи более точно подскажут, а пока — чем могу, так сказать… Кому решение нужно — тот пример и рисует. |
ikki Пользователь Сообщений: 9709 |
ВПР по неотсортированным данным с точным поиском — медленный, конечно. я не знаю общих рекомендаций, способных кардинально улучшить ситуацию. фрилансер Excel, VBA — контакты в профиле |
PowerBoy Пользователь Сообщений: 141 |
Если хотите оставить в Excel. Excel + SQL = Activetables |
Oleg777 Пользователь Сообщений: 8 |
#8 13.07.2015 13:17:25
Спасибо всем огромное. А можно один пример такого SQL запроса на макросах. |
||
Oleg777 Пользователь Сообщений: 8 |
#9 13.07.2015 13:26:15
Я ищу от ПК, будь то excel (как сейчас или что то другое), максимального решения своих задач. Каждый раз менять представление отчета из сводной таблицы — это гемор. А так я зашел на нужный лист, обновил, и сразу печатаю. Это намного продуктивней.
Я работаю с форматом таблицы. И в «белые» поля, куда не распространяется область таблицы значения не вношу. Только в формате таблицы у меня заполненных около 5 000 строк… Или я что то неправильно понял?
Обычная моя формула = IF(A7=0;VLOOKUP(…);VLOOKUP(…)) — и это одна из самых простых. Они мне такие нужны, для моей задачи. Но конечно оптимизация процесс бесконечный. Буду работать над этим. Спасибо! |
||||||
Oleg777 Пользователь Сообщений: 8 |
#10 13.07.2015 13:39:20
Это точно!!! И еще ЕСЛИ (IF). И чудеса это мягко сказано. Они могут помочь максимально исключить человеческий фактор. Простейшая форма ИИ, если так можно сказать.)))
Жаль конечно! А может можно в другой какой-нибудь программе работать? А excel использовать как средство выхода данных??? Как это во многих современных программах устроено? Но как этого добиться, я не знаю. Трудиться готов!!! Не знаю дорогу, которой нужно идти!!! Поэтому к Вам за советом и пришел. Може какой нибудь SQL server express?
Мне кажется это все «таблетки», а не решение причины болезни, т.к. это сейчас 5 000 строк, а через год будет 20 000… Вот формулы заменить на макросы — хорошая идея. Но я этого не умею делать к сожалению… |
||||||
ikki Пользователь Сообщений: 9709 |
#11 13.07.2015 13:52:33
простой пример. фрилансер Excel, VBA — контакты в профиле |
||
Oleg777 Пользователь Сообщений: 8 |
#12 13.07.2015 13:55:16 Тогда я Вас не понял…
|
||
ikki Пользователь Сообщений: 9709 |
#13 13.07.2015 13:57:55
гм. честно говоря, только то, что в ней написано. фрилансер Excel, VBA — контакты в профиле |
||
Oleg777 Пользователь Сообщений: 8 |
Я не понял как так сделать чтобы ВПР при поиске просматривал не 1000 записей, а 10???))) |
ikki Пользователь Сообщений: 9709 |
массив должен быть отсортирован по возрастанию того столбца, в котором ВПР ищет значение. фрилансер Excel, VBA — контакты в профиле |
ikki Пользователь Сообщений: 9709 |
в файле. хотя… Изменено: ikki — 13.07.2015 16:11:10 фрилансер Excel, VBA — контакты в профиле |
Oleg777 Пользователь Сообщений: 8 |
Спасибо, за ответ! Изменено: Oleg777 — 13.07.2015 16:10:13 |
PowerBoy Пользователь Сообщений: 141 |
#18 13.07.2015 14:30:48 Вот пример SQL запроса из той же книги:
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
Здравствуйте.
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 |
вот пример
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 минут
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
02.06.2019, 11:51 |
6 |
Или я что-то не понимаю, но зачем в формуле прописывать условие (тем самым усложняя формулу) если заранее известно что значения равны?! Миниатюры
0 |
Narimanych 2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,143 |
||||
02.06.2019, 12:02 |
7 |
|||
Erolim, Один из вариантов ускорения- сбросить данные в массивы-обработать — вывести в таблицу. В примере , который вы прикрепили:
Так что , чтобы рассчитывать на помощь необходимо: Прислать пример в «читабельном» виде — хотя бы 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 минуту
0 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
02.06.2019, 17:45 |
11 |
В идеале хотелось бы ускорить скорость вычисления в 1000раз Думаю это возможно, но надо малость подождать, когда изобретут, например, квантовые процессоры.
0 |
2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,143 |
|
02.06.2019, 17:46 |
12 |
Прислать пример в «читабельном» виде — хотя бы 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 |
в каком читабельном виде? это и есть такой вид какой есть в файле. Добавлено через 4 минуты
0 |
2630 / 1636 / 744 Регистрация: 23.03.2015 Сообщений: 5,143 |
|
02.06.2019, 18:02 |
15 |
в каком читабельном виде? это и есть такой вид какой есть в файле. Thanks for suggestion….
0 |
-6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
|
02.06.2019, 19:51 [ТС] |
16 |
Alex77755, у вас получилось открыть файл? если да. то запускали макрос «обновление»?
0 |