7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
||||||
1 | ||||||
Как отфильтровать уже отфильтрованные значения таблице Excel15.04.2013, 14:41. Показов 10624. Ответов 42
Метки нет Все метки)
(
Привет.
С помошью команды:
А теперь как мне из этого отфильтрованного объема данных отфильтровать дополнительно но уже по другому полю (например №2)?
0
|
|
15.04.2013, 14:41 | |
Ответы с готовыми решениями:
42
Как отфильтровать подстановочные значения в таблице по значению предыдущего столбца Как подсчитать отфильтрованные записи в таблице?
Как исключить из Comboboxa значения, которые уже были введены в ячейки Excel? |
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
15.04.2013, 15:02 | 2 |
... Field:=2, ...
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
16.04.2013, 13:16 [ТС] | 3 |
Не верно выразился. Поправка.
Как узнать список (к примеру по колонке №2) отфильтрованных значений который отфильтровался? Т.е. таблица отфильтрована теперь как получить доступ к этим данным.
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
16.04.2013, 13:38 | 4 | |||||
Отфильтрованные ячейки - это видимые ячейки. Диапазон, включая заголовок, можно получить так:
1
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
16.04.2013, 14:53 [ТС] | 5 |
Не совсем понял, в итоге rng это будет объект Range ?
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
16.04.2013, 14:58 | 6 |
Да, объект Range.
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
17.04.2013, 05:59 [ТС] | 7 |
Хорошо, первый предложенный способ предпочтительнее т.к. вариант с перебором всех ячеек не годится, т.к. ячеек может быть миллионы.
Казанский, а существует ли способ получить объект Range всех отфильтрованных значений а не только какой то отдельной колонки отфильтрованных значений? Например ведь существует объект UsedRange который возвращает диапазон с данными начиная от верхней левой до нижней правой ячейки в листе...
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
17.04.2013, 09:30 | 8 |
2
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
18.04.2013, 12:55 [ТС] | 9 |
Спасибо. Подскажите.
Не могу узнать как определить кол-во строк и столбцов в у этой отфильтрованной области? Добавлено через 55 минут rng.Rows.Count возвращает 1. Не могу понять. А должен возращать кол-во строк включая заголовок. к примеру rng.Count возвращает корректное значение, кол-во всех элементов в области.
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
18.04.2013, 13:16 | 10 | |||||
Надо перебрать все области
1
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
||||||
18.04.2013, 14:13 [ТС] | 11 | |||||
Правильно ли я понял, что список отфильтрованных значений представляется в фильтре как множество Areas?
А каждая Areas это область из соседних непрерывных ячеек? Т.е. команда rng.Rows.Count возвращает кол-во строк в первой Areas и которая (в моем случае) равна 1. Так? Просто мне непонятно почему rng.Count возвращает верное кол-во отфильтрованных ячеек. ведь rng мы задавали как диапазон ячеек по колонке №2 из отфильтрованной таблицы. Это я к чему, пытался прочитать все эти значения вот так:
Как же так? rng.Count возвращает верное кол-во отфильтрованных (отображаемых ячеек) А rng(1) - возвращает значение неотображаемой первой ячейки нефильтрованной области..
0
|
15137 / 6411 / 1730
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
18.04.2013, 14:26 | 12 | |||||
Выражение rng(i), т.е. свойство rng.Cells(i), работает не так, как Вам хотелось бы
![]() Грубо говоря, это свойство возвращает ячейку ЛИСТА относительно первой ячейки rng. Для него неважно, входит эта ячейка в rng или нет. Чтобы перебрать все ячейки несвязного диапазона, можно использовать цикл
1
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
19.04.2013, 06:10 [ТС] | 13 |
Казанский, а ты случаемне в курсе как можно считать значения из списка фильтра?
Имеется ввиду что значения были отфильтрованы, теперь как узнать список этих отфильтрованных значений как представляет их сам Excel в фильтре..
0
|
5471 / 1149 / 50
Регистрация: 15.09.2012
Сообщений: 3,515
|
||||||
19.04.2013, 09:08 | 14 | |||||
Код работает, если на активном листе есть автофильтр.
Кликните здесь для просмотра всего текста
1
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
19.04.2013, 11:24 [ТС] | 15 |
Скрипт , верно ли я понял что это решеие работает только на активном листе. И другого способа нет?
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|
19.04.2013, 12:06 [ТС] | 17 |
Может кто подскажет, почему так?
Первый раз я прменил автофильтр и отфильтровал колонку №1 по массиву filter_1, так: Workbooks("файл.xls").Worksheets("Sheet1").UsedRange.AutoFilter Field:=1, Criteria1:=filter, Operator:=xlFilterValues Далее из полученного списка отфильтрованных значений из колонки №3, я сформировал новый массив фильтрации - filter_2, и применил фильтр повторно к колонке №3, командой: Workbooks("файл.xls").Worksheets("Sheet1").UsedRange.AutoFilter Field:=3, Criteria1:=filter_2, Operator:=xlFilterValues На выходе получилось что автофильтр отфильтровал некорректно. Точнее, в колонке №3 по всем данным были сняты галочки. Вот, смотрите на рисунке. А должно было что бы стояли галочки напротив данных которые были в массие filter_2. Может я чего то непонял?
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
||||||
22.04.2013, 09:15 [ТС] | 18 | |||||
Вообщем есть вопросы.
Скрипт, твой пример хороший. Разбирался в нем и понял что: у объекта AutoFilter есть свойство Filters, благодяря которому можно узнать список выбранных значений в колонке автофильтра. Т.е. код:
Но если в этой колонке не было применено фильтации то ничего не возвращается. Мне же нужно узнать каким образом можно полчить список значений которые образовались в колонке №2 после применения фильтрации по колонке №1. Дело в том что в колонке №2 я ничего и не могу выбать т.к. мне чтоб отфильтровать по колонке №2 нужно хотя бы узнать список доступных знчений для фильтрации в этой колонке..
0
|
5471 / 1149 / 50
Регистрация: 15.09.2012
Сообщений: 3,515
|
|
22.04.2013, 09:26 | 19 |
oleggy, проанализировав члены объекта "Filter", прихожу к выводу, что в Excel-VBA нет средств для того, что вы хотите в сообщении #19.
Может кто опровергнет это утверждение.
0
|
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231
|
|||||||||||
22.04.2013, 09:45 [ТС] | 20 | ||||||||||
Казанский , твое решение это использование:
свойства Range у объекта AutoFilter Т.е. код:
А если еще в добавок написать так:
НО этот случай не подходит мне потому что в этом случае я получаю отфильтрованные данные, мне же нужно получить список фильтруемых данных. Как на рисунке. Добавлено через 14 минут По идее если это отображает Excel то программно можно получить доступ к этим данным.
0
|
22.04.2013, 09:45 | |
Помогаю со студенческими работами здесь
20
Как отфильтровать дубликаты записей в таблице?
Как отфильтровать ячейки с формулами в 2007 Excel? Добавить значение в таблицу, только в том случае, если в таблице уже нету такого значения. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |