Страницы: 1
RSS
ListObject.Filter. Фильтр «умной» таблицы начинает сильно тормозить, если по её диапазону происходит многократный поиск в другой таблице
 
Приветствую!

Дано 2 таблицы - справочник FROM и перечень WHERE
В WHERE проставлены номера строк из FROM и по этим номерам (позициям) тянется столбец из FROM с помощью ИНДЕКСА
То есть в FROM только 2 столбца с данными, а в WHERE 1 столбец с номерами строк и второй - с функцией =ИНДЕКС()

Вопросы:
Можно ли как-то это побороть, оставив ИНДЕКС (или подтягивать столбец по позиции как-то иначе)?
Почему при наличии ИНДЕКСА в WHERE фильтр FROM начинает так тупить?

ИНДЕКС - очень быстрая функция, но, если её убрать в этом случае - будет намного (в десятки раз на сотнях тысяч строк) быстрее
ПОИСКПОЗ примерно такие же тупняки даёт, хотя несравнимо медленнее сама по себе
Пересчёт (авто или вручную) никак не влияет

Прошу для примера вставить номера строк из FROM в первый столбец WHERE 2 раза друг под другом (2 блока) - этого будет достаточно, чтобы начались тормоза (я удалил, чтобы не раздувать файл, а обменники на работе запрещены) - на скринах показал
При увеличении блоков, тормоза заметно усиливаются
Скрины
Ссылка на файл
!!! ВАЖНО !!!
Решение нужно для "умной" таблицы, т.к. в обычных диапазонах подобной проблемы нет
(достаточно преобразовать в диапазон только фильтруемую таблицу — FROM в данном примере)

UPD: При установке фильтра также многократно возрастает время пересчёта
Изменено: Jack Famous - 05.04.2022 10:44:31
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
На П сделал 120 строк с данными во втором столбце и формулами. На С никаких глюков ии тормозов при работе фильтра не заметил.
Excel-2010

Замечание: названия листов (и прочие имена, названия, надписи) в файле должны соответствовать описанию в сообщении.
 
vikttur, у меня было в примере в Справочнике 2 одинаковых столбца с нумерацией от 1 до 20000 (чуть меньше - на скрине видно), а в перечне эти 20 тыс двумя блоками вставлены друг под другом в 1ом столбце. Во втором в перечне ИНДЕКС
Изменено: Jack Famous - 07.04.2021 16:45:42
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Д, с 20 000 формул тормозит. Потому что много их и все пересчитываются при изменении входных данных
 
vikttur, сделал ссылку через телефон и добавил в СС

Итак: в FROM 20 тыс номеров (от 1 до 20 тыс), в WHERE этот блок (1-20тыс) скопирован 3 раза друг под другом
Итог: фильтрую в FROM первый  столбец по числам 2, 5 и 8. С ИНДЕКСОМ 7 секунд, без него 0,5
Мистика

Думаю, что причина та же, по которой пересчёт на отфильтрованном диапазоне в разы дольше, чем при снятом фильтре
Изменено: Jack Famous - 07.04.2021 17:00:16
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал: сделал ссылку через телефон и добавил в СС
А по русски? Что значит через телефон и СС - это ведь не о фашистах? :)
 
vikttur, файл переслал себе на почту с работы. От себя тебе, не получилось, скачал на телефон с почты и закинул на dropme, а ссылку напечатал ручками  :D
СС - стартовое сообщение  :)

Цитата
vikttur: с 20 000 формул тормозит. Потому что много их и все пересчитываются
не то - ИНДЕКС и 100 тыс пересчитает за секунду, это проверено
Изменено: Jack Famous - 07.04.2021 17:03:50
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Как Москва ломает судьбы людей.
Убери "умную" таблицу. Удобство  <> краткость, скорость.
По вопросам из тем форума, личку не читаю.
 
БМВ, привет  :)
Цитата
БМВ: Как Москва ломает судьбы людей
не понял…
Ломает судьбы тормозами в фильтре? Уверен, в Питере также тормозит))
Забыл после переезда как преобразовывать умную в обычный диапазон? Не забыл, но забыл сказать, что ищу решение именно для умной - в обычных диапазонах многое иначе и часто быстрее
Цитата
БМВ: Убери "умную" таблицу
выше уже написал, что она нужна
Цитата
БМВ: Удобство  <> краткость, скорость
удобство (умных таблиц) <> скорость (работы в них) — это имелось ввиду? Если да, то согласен (хотя, я бы подробнее написал всё-таки: "удобство работы в умных таблицах с лихвой компенсируется сопутствующими проблемами")  :)
А краткость - это о чём? О макросах для работы в обычных диапазонах в сравнении с объектом умной таблицы?

Пока решил "в лоб": вставляю значениями (макросом) то, что ранее тянул ИНДЕКСОМ по ПОЗИЦИИ (вставленной, опять же, макросом)
Зато, минус столбец с номерами  :D
Изменено: Jack Famous - 08.04.2021 09:22:37
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Модераторам:
ListObject.Filter. Фильтр «умной» таблицы начинает сильно тормозить, если по её диапазону происходит многократный поиск в другой таблице
Изменено: Jack Famous - 08.04.2021 09:39:50
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх