Тормозит excel при фильтрации

Хитрости »

18 Декабрь 2015              34206 просмотров


Файл долго фильтрует строки/тормозит при фильтрации

Довольно часто у пользователей после продолжительной работы в файле возникает проблема: при изменении условия фильтрации(Данные(Data)Фильтр(Filter)) файл задумывается на минуту, а порой и не на одну. В этой статье я решил рассмотреть несколько причин подобного поведения файла и как их устранить. При этом описанные методы так же справедливы и для случаев, когда файл тормозит не только при фильтрации, но и при других изменениях на листе:

  • Большое количество формул и функций на листах
    Самая частая причина — наличие большого количества формул на листе. Это могут быть и ВПР(VLOOKUP) с большим диапазоном данных и СУММПРОИЗВ(SUMPRODUCT), и любые другие в разных сочетаниях. Так же значительно тормозить файл могут формулы массива, даже если они не сложные. Добавить тормозов в этом случае могут еще и так называемые «летучие» функции, среди которых чаще других в файлах используются: ДВССЫЛ(INDIRECT), СМЕЩ(OFFSET), ЯЧЕЙКА(CELL). Почему летучие и чем они плохи? Обычно функции пересчитываются только в том случае, если изменена сама функция или любой аргумент этой функции(иными словами только если изменены ячейки, которые влияют на результат функции). Летучие же функции пересчитываются при любом изменении в книге(в том числе сортировка и фильтрация), независимо от того, повлияет ли это на расчет самой функции.
    Поэтому если файл напичкан формулами и тормозит, то первое, что надо сделать это найти те формулы, расчеты которых больше не нужны и преобразовать их в значения: Как удалить в ячейке формулу, оставив значения?. Оптимальный вариант: сделать копию файла, заменить все формулы значениями и просматривать данные в нем. Так же можно заменить ту часть формул, расчеты которых не нужны для выполнения текущей задачи.
    Если этот вариант не подходит, то необходимо убедиться, а нет ли летучих функций? Это можно сделать элементарно при помощи поиска: Ctrl+F, найти(find what) -Имя функции, кнопка Параметры(Options>>) -снять галку с Ячейка целиком(Match case). В этом случае надо попробовать оптимизировать расчеты, отказавшись от таких функций. Как правило в большинстве случаев их можно заменить другими функциями, но это потребует знания самих функций.
    Так же следует помнить, что функции и формулы могут быть не просто на листе, а так же содержаться в именованных диапазонах: Именованные диапазоны. Как пример таких формул: Динамические именованные диапазоны. Поэтому так же следует проверить наличие именованных диапазонов и удалить все неиспользуемые. С осторожностью удаляйте такие имена — как правило, если плохо в этом ориентируетесь удалять их можно только на копиях файлов и только после того, как все формулы в книге замените значениями


  • Наличие условного форматирования на листе
    Если в листе есть много условий условного форматирования, это вполне может приводить к медленной работе файла не только при изменения условий фильтрации, но и вообще при любом действии на листе — изменение данных в ячейках, сортировка, пересчет формул и т.д. Происходит это потому, что условное форматирование накладывает формат поверх реального и определяется на основании условий, которые могут определяться расположением и видимостью строк на листе. Поэтому следует убедиться в наличии/отсутствии условного форматирования и понять — а так ли оно нужно в этом файле? Если не знаете где искать условное форматирование: Основные понятия условного форматирования и как его создать
  • Разбиение на печатные страницы
    Очень сильно может замедлить работу файла разбиение листа на печатные страницы, особенно если рабочий диапазон(UsedRange) листа довольно большой. Почему этот режим тормозит? Потому что при каждом изменении на листе Excel будет просматривать каждую строку и столбец и обращаясь при этом к настройкам печати(принтера), перерисовывая границы печати на листе.
    Кто установил эти границы, если я сам этого не делал? По умолчанию после вывода листа на печать, независимо от настроек книги или принтера, Excel отображает линии разбиения листа Excel на печатные листы и не убирает их.
    Убрать печатные страницы можно через параметры:
    Excel 2003:
    СервисПараметры -вкладка ВидАвторазбиение на страницы
    Excel 2007:
    Кнопка ОфисПараметры Excel(Excel options) -вкладка Дополнительно(Advanced)Показывать разбиение на страницы(Show page breaks)
    Excel 2010-2013:
    ФайлПараметры(Options) -вкладка Дополнительно(Advanced)Показывать разбиение на страницы(Show page breaks)
  • Структура/Группировка данных
    Как ни странно, но на фильтр очень сильно влияет наличие структуры/группировки на листе. Устанавливается группировка через вкладку Данные(Data)Группировать(Group) или Данные(Data)Промежуточные итоги(Subtotal).
    При этом тормоза в файле могу проявиться не сразу, а после добавления определенного количества строк или столбцов.
    Делается группировка обычно для возможности компактно расположить на листе данные, относящиеся к определенной группе или категории. И это действительно удобно, но не стоит увлекаться. Если файл стал тормозить — попробуйте создать его копию и удалить всю структуру и группировки: Данные(Data)Разгруппировать(Ungroup)Удалить структуру(Clear Outline). Если это поможет — стоит задуматься: а так ли нужна была структура?
    И отдельно буду публиковать подборку советов из комментариев к статье:

  • перенос текста на строки тоже может быть причиной тормозов. Поэтому лучше его не выставлять там, где он не нужен(например, для ячеек с текстом, который помещается в ячейке и так). Где искать: вкладка ГлавнаяПереносить текст или правая кнопка мыши —Формат ячеек -вкладка ВыравниваниеПереносить текст.
  • фильтр тормозит внутри «умной таблицы»(Вставка(Insert)Таблица(Table)). Если тормоза проявляются внутри умных таблиц, или при работе с ними, или в формулах, ссылающихся на них — то имеет смысл проверить работу файла без этих таблиц. Для этого необходимо все умные таблицы преобразовать в обычные: правая кнопка мыши по любой ячейке умной таблицы —Таблица(Table)Преобразовать в диапазон(Convert to Range).
    Рекомендую проделывать это все на копии файла, т.к. восстанавливать некоторые возможности умных таблиц после из удаления может быть не так просто

Ну и конечно, все эти варианты могут сойтись в одном файле. В таком случае в файле достаточно будет меньшее количество каждого компонента для получения коктейля «Глубинный тормоз» :)

Так же советую ознакомиться со статьей: Как уменьшить размер файла. Она тоже может помочь с устранением тормозов.

Так же см.:
Excel тормозит/зависает при копировании ячейки/диапазона
Как уменьшить размер файла


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

 

Ольга М

Пользователь

Сообщений: 1
Регистрация: 17.08.2021

Добрый день!

Помогите, может кто сталкивался.
Таблица — 15 столбцов и около 10 000 строк. Ссылок на другие книги нет, но есть ссылки на листы, есть простые формулы сцепить и округлить. Проблема возникает при фильтрации. Книга очень сильно подвисает.
Перевела в формат xlsb, удалил пустые строки и столбцы, ограничила фильтр таблицей с данными — не помогло. Скопировала отдельно лист и сделал все данные значениями — та же самая история. Удалила часть столбцов и часть строк — не дает эффекта. Перенесла на другой компьютер — тоже тормозит, перенесла на Mac — тоже не тянет. Ничего не помогает…

Подскажите, может кто сталкивался и решил проблему.

Изменено: vikttur17.08.2021 15:45:48

 

New

Пользователь

Сообщений: 4582
Регистрация: 06.01.2013

1. показать файл нам
2. попробуйте отключить автоматический пересчёт формул (меню Формулы — Параметры вычисления — Вручную) — помогает?

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#3

17.08.2021 15:53:14

Цитата
New: отключить автоматический пересчёт формул

Ольга М, пересчёт отфильтрованной умной таблицы идёт в десятки и сотни раз медленнее, чем без применённых фильтров
Один из

«приколов«

Excel  :D

Изменено: Jack Famous17.08.2021 15:54:32

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Файл долго фильтрует строки/тормозит при фильтрации

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

Дмитрий(The_Prist) Щербаков, приветствую!
Дим, у тебя там, кстати, нет про то, что «умные» таблицы тупят при фильтре  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Дмитрий(The_Prist) Щербаков

Пользователь

Сообщений: 14182
Регистрация: 15.09.2012

Профессиональная разработка приложений для MS Office

#6

17.08.2021 16:02:16

Цитата
Jack Famous написал:
«умные» таблицы тупят при фильтре

тут как бы…У меня они сами по себе не тупят при фильтре. Тупят, если они большие и с формулами всякими. Но они и без фильтра тупят, когда большие и с формулами, а про формулы уже есть первым пунктом…Спасибо, подумаю, как это обыграть и может добавлю в статью.

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы…

 

Jack Famous

Пользователь

Сообщений: 10852
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#7

17.08.2021 16:29:33

Цитата
Дмитрий(The_Prist) Щербаков: Но они и без фильтра тупят, когда большие и с формулами

на работе реальная умная таблица на 600 тыс строк и 20 столбцов. Сортировать невозможно (макросом забрать массив в память, отсортировать и выплюнуть обратно — 5 сек), зато фильтровать с отключенным автопересчётом — без проблем. Наличие формул на фильтр не влияет, если, опять же, автопересчёт отключен

Изменено: Jack Famous17.08.2021 16:30:38

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

sokol92

Пользователь

Сообщений: 4446
Регистрация: 10.09.2017

#8

17.08.2021 17:04:26

Цитата
Ольга М написал:
есть простые формулы сцепить и округлить

При каждом изменении автофильтра происходит полный

пересчет

этих формул. Воспользуйте рекомендациями из #2 и #7.

Владимир

В компании, в которой я работаю, у нас есть электронная таблица Excel, чтобы отслеживать покупки, которые компания сделала в прошлом году. Этот лист имеет приблизительно 1500 строк и 30 столбцов.

Несколько дней назад фильтрация на этом листе стала очень медленной. Фильтрация любого столбца по любому ключевому слову занимает около 5 секунд. Это довольно долго, потому что этот лист много фильтруется, и это раздражает.
Лист не имеет каких-либо формул или ссылок на другие листы или файлы.
При смене ячеек выполняется два макроса, но отключение обоих макросов не делает это быстрее.

Я также пытался удалить все строки, кроме одной, но применение фильтра к оставшейся строке все еще занимает 5 секунд.

У кого-нибудь есть идея, почему это может быть так медленно?

Обычно это происходит потому, что Excel считает, что набор данных намного больше, чем на самом деле. Например, если кто-то перешел к ячейке A1048576 и отформатировал ее, даже если она не выглядит иначе, теперь Excel считает, что у вас более миллиона строк. Проверьте это, выбрав ячейку A1 и нажав CTRL + End. Это приведет вас к тому, что Excel считает последней ячейкой на листе. Если это проблема, вы можете удалить все строки и / или столбцы после того, как заканчиваются ваши фактические данные, сохранить файл, закрыть его и снова открыть. Это должно помешать Excel видеть все эти пустые ячейки как часть данных. Если это не сработает, выберите ваши данные и вставьте их в новый файл.

Возможно, уже слишком поздно, но отключите автоматические вычисления. В VBA я использую эти два параметра, чтобы отключить автоматическую калибровку, применить фильтры, а затем снова включить автоматическую калибровку.

Sub automatic_update_on()

   Application.Calculation = xlAutomatic

End Sub

Sub automatic_update_off()

   Application.Calculation = xlManual

End Sub

Шаг 1: Выбрать все (Ctrl+A)

Шаг 2: Перейдите в раздел Домашняя страница> Очистить> Очистить форматы.

Шаг 3: Сохраните файл и повторно примените фильтр.

Вы сделали Это работает для меня каждый раз; пожалуйста, дайте мне знать, если это работает для вас!

  • Remove From My Forums
  • Вопрос

  • Добрый день!

    Есть 2 схожих по содержимому файла MS Excel. В одном фильтр обрабатывает за считанные секунды, а во втором с задержкой и надписью: «Приложение не отвечает». В процессах при этом (на Windows XP) появляется процесс OFFLB.EXE.

    С другим файлом все нормально. Что может быть не так?


    Александр Щербаков

Ответы

  • Ответ крылся в «Условном форматировании» книги, сохраненной в формате Excel 97-2003. При удалении всех правил все заработало нормально.

    Решение подсказало копирование листа в новую книгу, которая при сохранении стала ругаться именно на условное форматирование.


    Александр Щербаков

    • Помечено в качестве ответа

      18 апреля 2011 г. 9:02

Добрый день.
Работаю с файлом XLSX в MS2010 размером около 10Мб, в нём около 8 тыс. строк и 150 столбцов. В трёх столбцах — некороткие формулы типа ВПР* и ЕСЛИ*, в остальных — значения или суммирование.  (понимаю, непрактично, но пока нет возможности изменить ситуацию).
Проблема возникла при превышении некоторого невидимого ограничения на количество строк или столбцов с формулами или их сочетания: _автофильтр_ по любому столбцу стал работать с задержкой до 30 сек.
Раздельное удаление части столбцов, строк или замены формул значениями, пересохранение файла, перенос в новую книгу явного эффекта не даёт. Эффект заметен только при одновременном удалении половины строк, столбцов и замены формул значениями.
Казалось бы, выхода нет, остаётся дробить лист или отказываться от сложных, но удобных формул.
Вдруг, совершенно случайно обнаружил: если удалить ЛЮБОЙ столбец на листе, даже пустой, за пределами таблицы, то тормоза исчезают абсолютно! То есть, при всём вышеописанном массиве данных, включая формулы, _автофильтр_ начинает работать мгновенно! Но только до первого сохранения. Далее всё по новой начинает тормозить, пока снова не удалю столбец. Пришлось вытащить на панель кнопку для удаления пустого столбца намного правее таблицы.
Получается, что Эксель запросто может работать с такими объёмами, но требует «пинка»?
Это глюк Экселя? Может быть кто-то смог решить проблему более цивилизованным способом?

Понравилась статья? Поделить с друзьями:
  • Только excel без офиса
  • Тормозит excel при копировании ячейки
  • Только excel 2007 скачать торрент
  • Тормозит excel на mac os
  • Тормозит excel 2019 на windows 10