Автоматическая фильтрация в документе.

Автор OOKapitan, 29 января 2018, 13:31

0 Пользователи и 1 гость просматривают эту тему.

OOKapitan

      Здравствуйте.
     Помогите, пожалуйста.
     Имеется большоооой файл, заполненный количеством и ценами. Но количество в столбце заполняется только напротив нужных позиций. По столбцу с количеством затем делается фильтр по условию: значение больше либо равно 1. Сейчас я это делаю руками. Но, хоть процесс и относительно быстрый, это занимает многовато времени. Пробовал записать действия макрорекордером - записанный макрос выполняется ооооооооооооочень долго. Может кто сможет записать макрос, который бы работал пошустрее? Помогите, пожалуйста.

bigor

А после фильтра, что с данными делаете? Может быть не фильтровать можно, а скрывать ненужные строки, недавно такая тема была?
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

#2
Цитата: Bigor от 29 января 2018, 12:28А после фильтра, что с данными делаете?
Важно, чтобы отображались только строки, в которых в колонке J стоит цифра отличная от нуля. И строка с итогом. И строка номер 2.

JohnSUN

И что делать с подзаголовками? Ну, с этими длинными промежуточными названиями? Выбросить? Или дописать к результату слева?
(И почему xls?)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

OOKapitan

Цитата: JohnSUN от 29 января 2018, 12:34И что делать с подзаголовками? Ну, с этими длинными промежуточными названиями? Выбросить? Или дописать к результату слева?
(И почему xls?)
1) как угодно.
2) На работе работаем только с этим форматом. Тем более что у босса эксель.

bigor

#5
тогда смотри здесь: http://forumooo.ru/index.php/topic,6909.0.html
вот с учетом исправлений
REM  *****  BASIC  *****
Option VBASupport 1

Sub test_filtr
Application.ScreenUpdating=false
For Each r in [j5:j2500] ' до 2500-й строки как в твоем примере
If r.value < 1 Then r.entirerow.hidden=true
Next
Application.ScreenUpdating=true
End Sub



p.s. я так понимаю что количество строк у таблицы может меняться, поэтому нужно еще приделать функцию определения последней строки
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от 29 января 2018, 12:47p.s. я так понимаю что количество строк у таблицы может меняться, поэтому нужно еще приделать функцию определения последней строки
Не стоит заморачиваться. Больше 3000 строк ещё ни разу ни у одной таблицы не было.

bigor

а диапазон будешь каждый раз руками править :) тогда фильтровать быстрее получится
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от 29 января 2018, 12:47вот с учетом исправлений
Неа, не работает. Сначала ругался на строку отключения обновления экрана. Удалил её. Теперь выдаёт ошибку - см. скрин

OOKapitan

Цитата: Bigor от 29 января 2018, 12:59а диапазон будешь каждый раз руками править
Выставлю один раз до 3000 и всё.

JohnSUN

Слушай, а каково назначение L1:CW2? Впервые с такими довесками встречаюсь
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

OOKapitan

Цитата: JohnSUN от 29 января 2018, 13:02Слушай, а каково назначение L1:CW2?
Мне дают уже такой файл с довеском. И я с ним работаю. Как получается довесок - не знаю.

bigor

#12
Цитата: OOKapitan от 29 января 2018, 15:02
Цитата: Bigor от 29 января 2018, 12:59а диапазон будешь каждый раз руками править
Выставлю один раз до 3000 и всё.
тогда строка итого скроется - там кол-во =""
фильтруй тогда не по количеству, а по сумме исправь j на k
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

OOKapitan

Цитата: Bigor от 29 января 2018, 13:05тогда строка итого скроется - там кол-во =""
И фиг с ней. Это не критично.
А что по ошибке?

bigor

По ошибке, скорее всего твой openoffice еще не умеет так хорошо работать с vba как libre :(
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут