powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / определение адресов отфильтрованных диапазонов
5 сообщений из 5, страница 1 из 1
определение адресов отфильтрованных диапазонов
    #38180537
Diletant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Excel 2003.
Усложнил для себе обучающую задачу:
После автофильтра некоторые строки естественно скрыты.
Использовал Area.count получил 2 области (для простоты отладки).
Union (вручную внеся координаты областей) сделал диапазон непрерывным, для которого "моя программка" для непрерывного диапазона делает все что нужно.
Вопрос:
1. Каким образом программно определить адреса областей, т.к. их в боевом варианте будет не 2.
2. Нет ли ограничений на их (областей) количество. (разумеется меньше количества строк Excel)

Диапазоном для обработки считается 1 столбец с данными, т.к. offset(ом) обработка распространяется на все столбцы (для непрерывного диапазона отлажено).
...
Рейтинг: 0 / 0
определение адресов отфильтрованных диапазонов
    #38180576
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Diletant,
возможно, то что ищите

Range.SpecialCells(xlCellTypeVisible)
...
Рейтинг: 0 / 0
определение адресов отфильтрованных диапазонов
    #38180611
Diletant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотища,
Спасибо за участие, но:
После автофильтра получаем, например, номера строк 23-25, 46, 52-58 и т.д
Областей может быть 30, 100. Не вносить же их вручную для Union.
...
Рейтинг: 0 / 0
определение адресов отфильтрованных диапазонов
    #38180676
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Diletant,
> Не вносить же их вручную для Union
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
rem Вводная:
rem Первый лист в текущей книге отфильтрован. В результате получено БОЛЕЕ ОДНОЙ области
rem интересующий диапазон данных  - в столбцах со второго по пятый, начиная с первой строки


dim s$
s=ThisWorkbook.Worksheets(1).range("B:E").SpecialCells(xlCellTypeVisible).address
s=left(s,instrrev(s,",")-1)
debug.print ThisWorkbook.Worksheets(1).range(s).address
' что вместо адреса диапазона можно получить ссылку на диапазон, надеюсь, объяснять не надо



...
Рейтинг: 0 / 0
определение адресов отфильтрованных диапазонов
    #38182266
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скукотищаs=left(s,instrrev(s,",")-1)

Так потеряется последняя область, если последняя строка диапазона автофильтра является видимой.
Можно использовать свойство AutoFilter.Range:
Код: vbnet
1.
2.
s = ThisWorkbook.Worksheets(1).AutoFilter.Range.SpecialCells(xlCellTypeVisible).EntireRow.Address
Debug.Print s
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / определение адресов отфильтрованных диапазонов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]