Фон
У меня есть чрезвычайно большая таблица данных которая занимает до 12 часов для запуска около 1 миллиона входных сценариев на высокопроизводительной 64-битной машине, Сценарии основаны на ряде дискретных моделей Excel, которые затем передаются в финансовую модель для детальных вычислений.
Чтобы улучшить процесс, я хочу проверить и сравнить скорости:
- Текущий ручной процесс
- Использование VBA для обновления таблицы данных (с
Calculation
,ScreenUpdating
и т.д.) - Запуск
VBS
для обновления таблицы данных в невидимом экземпляре Excel
Итак, я ищу наилучший подход к программному управлению таблицей данных
Обновление: использование кода в (2) и (3) не принесло пользы при тестировании простого примера с книгой с одной большой таблицей данных
Скорее удивительно, что в VBA для таблиц данных очень мало - возможно, нет - прямая поддержка
Мой текущий поиск знаний и литературы
- QueryTable
BeforeRefresh
иAfterRefresh
События могут быть добавлены с помощью этого кода модуля класса. Intellisense не предоставляет это в качестве опции для таблиц данных - Индивидуальные сводные таблицы и QuertyTables могут быть доступны таким образом
ActiveWorkbookk.Sheets(1).QueryTables(1)
. Не так Таблицы данных - Устранение всех остальных
Data Tables
, а затем запускRefreshAll
было предложено в этом потоке MrExcel в качестве обходного пути.
Обходной путь, безусловно, полезен, поскольку у меня есть только одна таблица данных, но я бы предпочел бы прямой подход, если он существует.
Да, я придерживаюсь Excel:)
Пожалуйста, не предлагайте другие инструменты для этого подхода, как модели ввода, так и общая модель, использующая таблицу данных,
- часть хорошо зарекомендовавшего себя процесса, который останется на основе Excel,
- прошли профессиональную проверку,
- были оптимизированы и оптимизированы некоторыми опытными разработчиками Excel.
Мне было просто любопытно, есть ли способ настроить процесс, обновив конкретную таблицу данных с кодом, и мои первоначальные результаты теста выше не сделали этого.