Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Office Excel
Войти
Регистрация
Восстановить пароль
 
1111767
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 8
1

Быстродействие в Excel

13.03.2018, 09:06. Просмотров 297. Ответов 6
Метки нет (Все метки)

Здравствуйте, участники форума!
Есть файл Excel, размером 16мб, в нем куча формул (простых), так же есть и на VBA, когда пробую что то изменить-дописать, доделать, то очень долго приходится ждать пока он "подумает" прежде чем сделать то, что нужно.
Задался таким вопросом, возможно ли как то посмотреть над чем именно он так думает с технической точки зрения, что бы повлиять на быстродействие?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2018, 09:06
Ответы с готовыми решениями:

Быстродействие в Office
У меня комп RAM 16 Гб - работаю с большими документами, обрабатывает текста очень медленно, в...

Создание бланка заявки в Excel на основании данных из другого файла Excel
Всем доброго времени суток! Есть у меня такая задумка в Excel, может быть кто-нибудь сталкивался с...

Excel 2010. Цвет заливки ячеек не переносится в Excel 2003
Добрый день! Закрасил ячейки в Excel 2010 стандартной палитрой по умолчанию. Открываю файл в...

Как создать ссылку в excel для отправки файла excel
вот в чем вопрос есть прайс ну там несколько записей нужна ссылка по нажатию на которую мне на...

Разработка пользовательской таблицы средствами процессора Excel, создание и выполнение макросов Excel
Помогите пож Используется ексель + Microsoft Visual Basic for Applications( alt F11)

6
Казанский
14349 / 5957 / 1581
Регистрация: 24.09.2011
Сообщений: 9,381
13.03.2018, 20:18 2
Цитата Сообщение от 1111767 Посмотреть сообщение
когда пробую что то изменить-дописать, доделать, то очень долго приходится ждать пока он "подумает" прежде чем сделать
Перед изменениями Параметры - Формулы - Параметры вычислений: вручную.
После изменений ...: автоматически.
Можете записать эти действия в макросы в Личную книгу макросов и повесить на кнопки на ПБД.
Можно попытаться оптимизировать код VBA и формулы.
0
AlexM
1922 / 1403 / 571
Регистрация: 04.09.2015
Сообщений: 2,771
13.03.2018, 20:39 3
Цитата Сообщение от 1111767 Посмотреть сообщение
куча формул (простых)
Посмотреть бы на них. Может быть формулы не такие простые как кажется.
Есть функции, которые пересчитываются при любом изменении значений на листе. Это Летучие или Волатильные функции.
От них, по возможности, лучше избавиться.
1
1111767
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 8
14.03.2018, 05:50  [ТС] 4
Цитата Сообщение от AlexM Посмотреть сообщение
Есть функции, которые пересчитываются при любом изменении значений на листе.
Да, с этим согласен. Но даже если создать новый пустой лист в книге и попытаться там ввести любой символ в любой ячейке и нажать enter, то книга зависает на секунды 2-3. Приложил файл, там формула на самом листе и некие правила.
0
Вложения
Тип файла: docx Форм.docx (12.3 Кб, 6 просмотров)
shanemac51
Модератор
Эксперт MS Access
8137 / 3097 / 453
Регистрация: 07.08.2010
Сообщений: 8,480
Записей в блоге: 2
14.03.2018, 09:51 5
не поняла только, сколько строк в формуле(160 или 10230)
Формула на самом листе (единственная диапазон 160:40 строк/столбцов):
=ЕСЛИ(D$7="Р";ЕСЛИ((СУММЕСЛИМН(
ДВССЫЛ("'"&$C$2&"'!$I$8:$I$10230");
ДВССЫЛ("'"&$C$2&"'!E8:E10230");$C$9:$C$300;
ДВССЫЛ("'"&$C$2&"'!H8:H10230");D$6))=0;"";
СУММЕСЛИМН(
ДВССЫЛ("'"&$C$2&"'!$I$8:$I$10230");
ДВССЫЛ("'"&$C$2&"'!E8:E10230");$C$9:$C$300;
ДВССЫЛ("'"&$C$2&"'!H8:H10230");D$6));"")

Условное форматирование:
8 правил, в каждом формула

VBA:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub CommandButton1_Click() – возвращает на определнный лист
Dim aaarr As String
aaarr = Sheets("Лист").Range("C2")
Sheets(aaarr).Select
End Sub
 
Private Sub Worksheet_Activate()  - притаскивает наименование с другого листа, на том листе оно тоже динамическое
Sheets("Лист").Range("C2") = Sheets("Лист").Range("B27")
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range) – скрывает строки пустые
Rows("9:125").EntireRow.Hidden = False
For Each c In Range("A9:A125")
If c = "0:00" Then
c.EntireRow.Hidden = True
End If
Next
End Sub
0
AlexM
1922 / 1403 / 571
Регистрация: 04.09.2015
Сообщений: 2,771
14.03.2018, 09:57 6
ДВССЫЛ() - летучая функция. В данном случае избавиться от нее можно, если суммировать по условиям макросом.
0
1111767
0 / 0 / 0
Регистрация: 14.02.2018
Сообщений: 8
15.03.2018, 05:22  [ТС] 7
Цитата Сообщение от AlexM Посмотреть сообщение
В данном случае избавиться от нее можно, если суммировать по условиям макросом.
Буду экспериментировать. Ну я правильно думаю, что "суммеслимн" можно заменить на (с8:с153).formula=sumifs(тут формула), но так придется для каждого столбца делать.
Может быть лучше в какой-то переменной запоминать изменяющееся значение и дать ему "имя"..А в формулу вместо "двссыл" писать это "имя". Как быстрее будет работать, и вообще будет ли так работать?

Добавлено через 31 минуту
Цитата Сообщение от shanemac51 Посмотреть сообщение
не поняла только, сколько строк в формуле(160 или 10230)
160:40 это диапазон где прописана сама формула
0
15.03.2018, 05:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.03.2018, 05:22

Надстрочный индекс в Excel (было: степень числа в Excel)
Не могу найти как написать степень числа в Excel. Подскажите пожалуйста. Заранее спасибо.

Ошибки сохранения форматирования из Excel 2007 v Excel 2003
Как востановить форматы ячеек при сохранении в Excel 2007 на формат Excel 2003, Проблема следующая:...

MS Excel -Как включить Поиск решения в Excel 2013
как включить "Поиск решения" в excel если в Доп. Настройках нету данного пункта?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru