Относительно производительности таблицы (и производительности в целом):
Я знаю, что это старый вопрос, но я хочу получить это задокументировано.
Одна вещь, которая изменилась между старыми версиямиExcel и версии после 2007 года таковы, что Excel теперь активирует целевой лист любой операции PasteSpecial.Вы не можете переопределить его, отключив ScreenUpdating и выполнив расчеты вручную.Такая активация сделает лист видимым и вызовет неконтролируемое мерцание.
Мой оригинальный код VBA работал очень быстро на старом однопроцессорном компьютере под управлением XP с Excel 2000. Переход на Excel 2013 на современном компьютере был ошеломляющимв ужасной медлительности выполнения кода.Тремя областями, снижающими производительность, являются PasteSpecial с одного листа на другой, любой другой код, требующий активации листов (уровень масштабирования, расширенный фильтр, имена диапазонов на уровне листов и т. Д.) И автоматизация защиты / снятия защиты листов.
Это очень плохо, потому что PasteSpecial помогла «очистить» копируемые вами данные (прямое использование .Copy для цели вызовет случайную ошибку).
Так что вам нужно просмотреть свой код и убедиться, что вы используете прямойприсваивание нужного свойства нужному типу данных (например, из Value, Value2, Text и Formula) вместо PasteSpecial.
например .Range ("MYRANGE"). Value = .Cells(5, 7) .Value2
Вы также должны проявлять скрупулезность в сопротивлении использованию Select и Activate во всем своем коде.
Как упоминалось выше, вы найдете много комментариев в Excel для форумов оэтот последний пункт будет утверждать, что вам «никогда» не нужно использовать активацию, что явно не соответствует действительности, поскольку некоторые вещи в Excel применимы только кили требовать активных листов.Понимание случаев, когда активация принудительно активируется определенным методом или использованием объекта, также поможет в кодировании.К сожалению, вы не увидите много в документации по этому вопросу.
Обновление:
Относительно условного форматирования вы найдете много жалоб на различных форумах по поводу медлительности Excel при обнаружениибольшое количество условно отформатированных ячеек.Я подозревал, что это повлияет на таблицы Excel, так как у них есть много вариантов формата таблицы.Чтобы проверить это, я взял большую используемую нами рабочую книгу, которая в настоящее время отформатирована как несколько рабочих листов с одинаковым стилем таблицы Excel.
После преобразования таблиц в обычный диапазон я заметил без разницыв скорости выполнения кода .Это может указывать на то, что использование форматов таблиц Excel намного лучше, чем условное форматирование ваших собственных массивов ячеек.