0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 7

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

28.07.2022, 10:45. Показов 1093. Ответов 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,851
Записей в блоге: 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,851
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
BASH scripting - the best cases [PurpleSchool]
jigi33 08.04.2025
Занятия BASH в PurpleSchool - отличные примеры для внедрения в практику (see screenshots and file names)
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. ) В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер