Страницы: 1
RSS
Некорректная вставка массива в диапазон умной таблицы со скрытыми фильтром строками, UnCorrect insert Array in Table Range with Filtered Rows
 
Приветствую!
Хотел использовать дополнительный столбец для быстрого фильтра, но не тут-то было…

Задача: Вставить массив с элементами «"1"» (для фильтруемых) и «Empty» в столбец, содержащий скрытые фильтром строки
Проблема: Вставка происходит некорректно
Чтобы повторить "ошибку", запустите макрос при скрытых "0" в первом столбце (строки без заливки)

Выход:
проще, но дольше — вставлять "1" в каждую ячейку в цикле
сложнее, но быстрее — запоминать адреса ячеек в массив, передавать в функцию для нарезки на блоки и уже в цикле по блокам ячеек заполнять значения

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

Кто знает, почему так происходит и знаете ли вы более простые и/или быстрые способы добиться того же результата

UPD: Лучшее решения в рамках задачи «Фильтр с помощью дополнительного столбца
Изменено: Jack Famous - 02.11.2021 09:50:08
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Сними фильтр перед вставкой массива.
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, неплохо, но, если пользователь применил фильтр по другим полям, то они тоже скинутся, а это нехорошо  :sceptic:

Пример: пользователь отфильтровал диапазон цен, а потом хочет отфильтровать поставщиков
Если сбросить, то он просто увидит поставщиков и придётся снова фильтровать по ценам - то есть фильтр ЗАМЕНИТСЯ
В моём варианте фильтр ДОБАВИТСЯ и всё будет ОК

Если бы вариант с резкой адреса был медленный, то я бы таки сделал, но он вполне шустрый, так что можно и позаботиться о бедных пользователях  :)
Изменено: Jack Famous - 01.11.2021 14:25:42
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Можно попробовать так. См. файл.
Главная идея: на момент вставки массива на лист - убрать выделение с умной таблицы.
На моём Excel2010 х32, Win7 работает. Но объяснить, почему - не могу.
Изменено: tolikt - 01.11.2021 14:50:26 (Добавлено краткое пояснение)
 
tolikt, работает, вроде…
А как вы сделали, если не понимаете принцип?)
Использовать нельзя пока непонятен механизм работы

Цитата
tolikt: Главная идея: на момент вставки массива на лист - убрать выделение с умной таблицы
Тогда зачем СТОЛЬКО кода
Изменено: Jack Famous - 01.11.2021 14:52:32
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Я в Excel около 80% делаю того, что не понимаю и уже никогда не пойму. Просто делаю по аналогии с использованием многолетнего опыта и пока ещё не полностью высохшими мозгами...
 
tolikt, спасибо - я протестирую вариант) а откуда вы его взяли?)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
а откуда вы его взяли?
Из своей головы. Просто потыкал туда-сюда, позапускал макрос так и сяк, придумал для себя некую причину глюка и набросал код, чтоб его обойти.
Но ещё раз: глюк обойдён, но почему он возникает - мне не ясно.
 
tolikt, я попытался отловить, но не вышло
Добавил ваш код под спойлер в шапке темы и автоматизировал пример (установка фильтра, очистка диапазона под вставку)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
Тогда зачем СТОЛЬКО кода
Да, каюсь: я увлёкся разными вариантами условий, при которых может выполняться код.
Хотя для объяснения могло хватить одной строки или даже просто описание Главной идеи. Всё остальное может быт доработано исходя из конкретных условий.
 
Цитата
tolikt: Главная идея: на момент вставки массива на лист - убрать выделение с умной таблицы
это не сработает
Изменено: Jack Famous - 01.11.2021 15:31:48
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Самый простой и надежный вариант: запоминаем фильтр, убираем фильтр, вставляем данные, восстанавливаем фильтр.
Владимир
 
Да, не сработает. Но это если прямо в коде применить фильтр "<>0" к столбцу А. В первоначальном варианте в коде фильтра не было и всё работало нормально, если активная ячейка была за пределами умной таблицы.
Ещё раз: причина глюка непонятна, но её можно обойти, активировав ячейку сбоку и в коде не применять фильтр.
Метод обхода глюка плох тем, что непонятно, в каком месте и почему он ещё вылезет, ибо указанный в примере код, думаю, это часть большого кода. Если прямо в коде нужно применять фильтр, то можно воспользоваться советом bedvit #2. Но там придётся копать сам автофильтр и, например, тему Получение массива критериев из автофильтра excel
 
sokol92, разумеется, однако НЕ для умных таблиц, если я ничего не забыл  ;)

Цитата
tolikt: копать сам автофильтр
устанете)
Есть специальный столбец для фильтра, так что можно в его видимые ячейки "запомнить" текущий фильтр на момент применения макрофильтра - это легко
Завтра прикин
Изменено: Jack Famous - 01.11.2021 19:01:21
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:
однако НЕ для умных таблиц, если я ничего не забыл
Да, представления и "умные" таблицы не живут вместе.
Владимир
 
Цитата
Jack Famous: можно в его видимые ячейки "запомнить" текущий фильтр на момент применения макрофильтра
добавил в шапку новый спойлер с файлом, кодом и описанием
Изменено: Jack Famous - 02.11.2021 09:52:36
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, а как лучшее решение решает поставленную задачу - вставить массив с элементами «"1"» (для фильтруемых) и «Empty» в столбец, содержащий скрытые фильтром строки при скрытых "0" в первом столбце? На первый взгляд задача одна, лучшее решение делает другое
Изменено: New - 02.11.2021 12:50:00
 
New, а что же ты так выборочно цитируешь?
Написано же Лучшее решения в рамках задачи «Фильтр с помощью дополнительного столбца»
Потому и вынес в отдельный спойлер

Тема другая, однако создана тема как раз из этой задачи. Приём на вопрос темы не отвечает (скорее всего, варианты все и так описаны), однако он очень рядом и потому прикреплён
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх