Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 7

Параметры вычислений Excel

28.07.2022, 10:45. Показов 1088. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые знатоки, подскажите пожалуйста, как сделать автоматический расчёт формул только для определённых ячеек? Все остальные при этом должны оставаться в режиме "вручную".
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2022, 10:45
Ответы с готовыми решениями:

VBA vs Формулы Excel - разные результаты вычислений над числом Пи
Элемент задания имеет вид ctg(pi*a)^2, где рі=3,1415926. В VBA прописывал как 1/(tan(pi*a)^2), аналогично прописывал в MS Excel, только...

Параметры вычислений формул
Доброго времени суток! Уважаемые знатоки, в настройках Excel есть возможность переключения вычислений формул для каждой книги с...

Форматирование ячеек Excel и параметры страницы Excel
Экспортирую DataGridView в Exel: Private Sub ToExcel() ' Try Dim sd As New SaveFileDialog sd.Filter =...

8
Безмятежный созерцатель
1310 / 739 / 79
Регистрация: 08.02.2017
Сообщений: 2,845
Записей в блоге: 1
28.07.2022, 17:21
Не знаю конкретно такого способа, но могу сказать, как достичь похожего результата. Формулы которые не нужно пересчитывать, можно поместить внутрь функции, которая будет сохранять старые значения и выдавать их вместо новых рассчетных данных. Т.е. пересчеты будут происходить, но функция будет выводить только старый результат.
Visual Basic Скопировано
1
2
3
4
5
Function FreezeValue(frml)
    Static OldValue, varInit As Boolean
    If Not varInit Or manCalc Then OldValue = frml: manCalc  = False
    FreezeValue = OldValue
End Function
Ручную калькуляцию надо будет включать макросом в котором нужно прописать
Visual Basic Скопировано
1
Public manCalc As Boolean: manCalc = True
0
 Аватар для KoGG
5615 / 1598 / 415
Регистрация: 23.12.2010
Сообщений: 2,399
Записей в блоге: 1
28.07.2022, 17:32
Можно отключить пересчет полностью и сделать событие на изменение влияющих ячеек с константами (без формул). В теле события прописать пересчет целевых диапазонов ( .Calculate) на нужных листах.
0
0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 7
28.07.2022, 17:40  [ТС]
Так весь разговор затевался для того чтобы не ждать по пол часа пока формулы пересчитаются во всех открытых книгах. А получается пересчёт всё равно будет идти, с подменой на старые значения? В любом случае спасибо за науку!)
0
 Аватар для KoGG
5615 / 1598 / 415
Регистрация: 23.12.2010
Сообщений: 2,399
Записей в блоге: 1
28.07.2022, 17:51
Пример для модуля нужного листа:
Visual Basic Скопировано
1
2
3
4
5
6
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Oblast As Range
    Set Oblast = Intersect(Me.Range("A1:B20"), Target)
    If Oblast Is Nothing Then Exit Sub
    Me.Range("D1:E20").Calculate
End Sub
Добавлено через 4 минуты
"Полчаса" пересчитываются формулы СУММЕСЛИМН и аналогичные, если большое количество строк и столбцов.
В таком случае лучше полностью заполнять нужную форму макросом, считав предварительно массив базу заполнения.

Добавлено через 6 минут
У меня заполняются 18 однотипных листов форм с областью заполнения 21 столбец на 158 строк из массива 98000 строк на 20 столбцов за 12,4 сек
0
0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 7
28.07.2022, 18:05  [ТС]
Уважаемый КоGG, дело в том что я работаю в одном основном файле, в нём много листов, большие таблицы, сводные таблицы. От формул избавился два года назад, макрос берёт формулы из 213 ячеек, копирует вставляет, рассчитывает и полученный результат превращает в значения. Другими словами количество формул минимизировал. Но всё равно файл объёмный 30 Мбайт и параллельно приходится открывать кучу других файлов, в результате всё виснет и подбешивает. Давно отключил автоматический расчёт, но в определённых файлах отключать его не хочется. Но вот блин незадача, как только включаю режим автоматич, так все открытые книги начинают пересчитываться, а отккрывать книги в другом экселе я не умел, Вы меня только сегодня научили.

Добавлено через 1 минуту
Вот бы знающий специалист всялся бы оптимизировать мой файл)
0
 Аватар для KoGG
5615 / 1598 / 415
Регистрация: 23.12.2010
Сообщений: 2,399
Записей в блоге: 1
29.07.2022, 09:48
Сводные таблицы - еще одна проблема, сильно замедляющая работу.
Все, что делает сводная таблица - может делать и макрос.
Желательно, чтобы все данные были в одной книге, внешние ссылки тоже замедляю работу.

Возможно комплект книг изначально не оптимизирован под быструю работу. Сильно ускорить может простая перекомпановка книг. Например все ресурсоемкие формулы : СУММЕСЛИМН, ВПР должны ссылаться на листы внутри одной книги, а в больших исходных массивах данных желательно вообще не иметь формул, зафиксировав значения.

Набирайтесь опыта, если не потянете - привлекайте фрилансеров.

Добавлено через 10 минут
В книгах часто накапливаются неиспользуемые имена с ссылками на внешние книги - они замедляют работу. Удаление:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub DeleteAllNames()
    Dim N
    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        On Error Resume Next
        For Each N In ActiveWorkbook.Names
            N.Delete
        Next N
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
    End With
End Sub
Сильно замедляют работу графические объекты (как простые, так и кнопки) в большом количестве. Удаление:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
Sub DeleteAllShapes()
    Dim oL, Sh
    For Each Sh In ActiveWorkbook.Sheets
        For Each oL In Sh.Shapes
            oL.Delete
        Next
    Next Sh
End Sub
Еще иногда случайно при редактировании на листе появляются данные в области до 1000000 или до конца столбцов (покажет Activesheet.Usedrange.Address) - такая книга начинает очень сильно виснуть.
Очистить - выделить полностью неиспользуемые столбцы или строки и сделать Очистить все.
0
Безмятежный созерцатель
1310 / 739 / 79
Регистрация: 08.02.2017
Сообщений: 2,845
Записей в блоге: 1
29.07.2022, 10:04
Цитата Сообщение от Danaher Посмотреть сообщение
А получается пересчёт всё равно будет идти, с подменой на старые значения?
Мой соет был конечно забавен.) Вообще зло такие функции как СМЕЩ. Если в формуле есть смещ, он будет заставлять пересчитываться свою ячейку + все зависимые при каждом пересчете на листе (возможно книги). В VBA такую функцию можно создать с параметром Application.Volatile = true.
0
 Аватар для KoGG
5615 / 1598 / 415
Регистрация: 23.12.2010
Сообщений: 2,399
Записей в блоге: 1
29.07.2022, 10:33
Лучший ответ Сообщение было отмечено Danaher как решение

Решение

Еще для ускорения:
Visual Basic Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
Sub Удалить_усл_форм_проверки_имена()
' Удаляет условное форматирование, проверку данных, имена диапазонов на всех листах книги.
    Dim Sh, N
    On Local Error Resume Next
    For Each Sh In ActiveWorkbook.Sheets
        Sh.Cells.FormatConditions.Delete
        Sh.Cells.Validation.Delete
    Next 
    For Each N In ActiveWorkbook.Names
        N.Delete
    Next N
End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2022, 10:33
Помогаю со студенческими работами здесь

Точность вычислений Excel 2013
Добрый день, подскажите пожалуйста, как в Excel 2013 установить точность вычислений как на экране? Спасибо

Как вывести результаты вычислений в Excel?
Вот код с решениями задач. Никак не могу сообразить как вывести ответы в excel private double zad_3_2(double n, double m) { ...

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

Параметры ячейки Excel
Доброго! В свою систему импортирую файл Excel, но возникла потребность так же переносить закраску и цвет шрифта. Вот и вопрос,как я...

Восстановить параметры excel
после переустановки ОС один макрос перестал правильно работать. Думаю что проблема в том что некоторых настроек или надстроек не хватает,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер