Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Узнать все доступные значения при установке автофильтра / 25 сообщений из 78, страница 1 из 4
31.08.2006, 17:46
    #33956452
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Если поставить автофильтр, то над клеточкой с ним появляется кобобокс в котором ставится условие, но также можно сразу выбирать уникальные значения.
Существует ли возможность через VBA узнать эти уникальные значения (диапазон заранее известен), чтобы программно не перебирать заведомо не встречающиеся значения, как это предлагает сам автофильтр?

...
Рейтинг: 0 / 0
31.08.2006, 18:21
    #33956557
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
или вопрос совсем простой или я не правильно его понял.. если пробежать вниз по колонке и собрать эти значения?
...
Рейтинг: 0 / 0
31.08.2006, 18:57
    #33956663
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
k-nikeСуществует ли возможность через VBA узнать эти уникальные значения (диапазон заранее известен), чтобы программно не перебирать заведомо не встречающиеся значения, как это предлагает сам автофильтр?
Если фильтр уже включен то можно использовать SpecialCells(xlCellTypeVisible)
Код: plaintext
1.
Dim r as Range
Set r = FilteredRange.Rows.SpecialCells(xlCellTypeVisible)
...
Рейтинг: 0 / 0
01.09.2006, 09:51
    #33957454
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
vbaproили вопрос совсем простой или я не правильно его понял.. если пробежать вниз по колонке и собрать эти значения?
Похоже, вы правильно поняли мой вопрос. Действительно, можно пробежаться по столбцу и собрать значения. И, признаюсь, мне даже в голову это не пришло, потому что я посчитал, что должен быть более рациональный способ.
Если включенный фильтр уже предлагает выбрать уникальные значения, значит наверняка этот массив уникальных значений можно откуда-то выцепить! Разве я не прав?

З.Ы. А вот, многоуважаемый мной, White Owl не понял меня.
...
Рейтинг: 0 / 0
01.09.2006, 10:14
    #33957527
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
k-nikeЕсли включенный фильтр уже предлагает выбрать уникальные значения, значит наверняка этот массив уникальных значений можно откуда-то выцепить! Разве я не прав?
мне тоже это интересно стало, но в объекте AutoFilter совсем мало свойств и данных о возможных значениях я не нашел. кроме того, список на экране отвечает не только за автофильтр, но и за сортировку (Excel2003), поэтому значения в этот список могут попадать не из автофильтра
...
Рейтинг: 0 / 0
01.09.2006, 10:18
    #33957540
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
vbaproмне тоже это интересно стало, но в объекте AutoFilter совсем мало свойств и данных о возможных значениях я не нашел. кроме того, список на экране отвечает не только за автофильтр, но и за сортировку (Excel2003)
Вы имеете ввиду, что этот список выдается автофильтром отсортированным? В ExcelXP тоже самое.
vbaproпоэтому значения в этот список могут попадать не из автофильтра
А вот это не понял.
...
Рейтинг: 0 / 0
01.09.2006, 10:33
    #33957593
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
k-nike vbaproмне тоже это интересно стало, но в объекте AutoFilter совсем мало свойств и данных о возможных значениях я не нашел. кроме того, список на экране отвечает не только за автофильтр, но и за сортировку (Excel2003)
Вы имеете ввиду, что этот список выдается автофильтром отсортированным? В ExcelXP тоже самое.
vbaproпоэтому значения в этот список могут попадать не из автофильтра
А вот это не понял.
в смысле, что кроме самого автофильтра, в раскрывающемся меню есть пункты для сортировки значений в колонке. Эти пункты запускают метод .Sort.
Поэтому я думаю, что своего рода «комбо», который мы видим на листе, не относится непосредственно к объекту АФ, а это другой какой-то объект, который сам собирает данные из своей колонки и просто предлагает для указания в АФ. А когда мы выбираем пункт, то запускает АФ с этим значением. А в самом объекте АФ этих уникальных значений нет. Это мое предположение.
...
Рейтинг: 0 / 0
01.09.2006, 10:44
    #33957629
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
vbaproэто другой какой-то объект, который сам собирает данные из своей колонки и просто предлагает для указания в АФ.
Да уж. Осталось определить что это за объект такой интересный? И как до него добраться?
...
Рейтинг: 0 / 0
22.09.2006, 15:42
    #34006645
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Созрел другой вопрос по нижеприведенному коду. Как раз нужно находить строки, которые видны после применения автофильтра.
White OwlЕсли фильтр уже включен то можно использовать SpecialCells(xlCellTypeVisible)
Код: plaintext
1.
Dim r as Range
Set r = FilteredRange.Rows.SpecialCells(xlCellTypeVisible)

У меня такая конструкция в ExcelXP не работает. И не пойму, FilteredRange это свойство какого объекта?
...
Рейтинг: 0 / 0
22.09.2006, 15:53
    #34006680
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
FilteredRange - а это что?
диапозон на который установлен фильтр?
...
Рейтинг: 0 / 0
22.09.2006, 15:55
    #34006686
vkodor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Код: plaintext
1.
2.
3.
4.
Sub f()
Dim r As Range
Set r = Rows.SpecialCells(xlCellTypeVisible)
MsgBox r.Address
End Sub
так работает
...
Рейтинг: 0 / 0
22.09.2006, 17:19
    #34006984
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
k-nike White OwlЕсли фильтр уже включен то можно использовать SpecialCells(xlCellTypeVisible)
Код: plaintext
1.
Dim r as Range
Set r = FilteredRange.Rows.SpecialCells(xlCellTypeVisible)

У меня такая конструкция в ExcelXP не работает. И не пойму, FilteredRange это свойство какого объекта?Это не свойство, это собственный объект :) Область на которую наложен фильтр.
Просто ActiveSheet.Rows.SpecialCells(xlCellTypeVisible) даст не только отфильтрованые строки, но и строки перед и после фильтрованых.
Поэтому для работы имеет смысл сначала повозится и определить (возможно вручную) область попадающую в фильтрацию.
Ну а если АвтоФильтр уже существует на листе, то можно написать так:
set FilteredRange = ActiveSheet.AutoFilter.Range
и использовать этот новый объект для краткости и удобства написания.
...
Рейтинг: 0 / 0
22.09.2006, 17:25
    #34007008
k-nike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Спасибо. Чето я ступил с этим FilteredRange.

...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.02.2008, 19:28
    #35134010
Yolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Выложите пожалуйста, весь пример кода как получить уникальные значения, я как не пытаюсь, не получается.

Спасибо!
...
Рейтинг: 0 / 0
16.03.2008, 12:03
    #35193439
Galustov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
вот так у меня заработало

Код: plaintext
1.
2.
3.
    Dim r As Range
    Set r = ActiveSheet.AutoFilter.Range.Rows.SpecialCells(xlCellTypeVisible)
    MsgBox r.Address
...
Рейтинг: 0 / 0
16.03.2008, 23:08
    #35193924
LETME
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
А чем принципиально отличается Автофильтр от Комбобокса сводной таблицы?
Про перебор значений в комбобоксе сводной таблицы на VBA имеется простой пример в стандартной справке...
...
Рейтинг: 0 / 0
17.03.2008, 02:32
    #35194010
Yolo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Galustovвот так у меня заработало

Код: plaintext
1.
2.
3.
    Dim r As Range
    Set r = ActiveSheet.AutoFilter.Range.Rows.SpecialCells(xlCellTypeVisible)
    MsgBox r.Address


а как мне из значений в столбце
1
2
3
3

Получить уникальные значения
1
2
3

???
...
Рейтинг: 0 / 0
15.12.2008, 10:02
    #35713842
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
vbapro k-nike vbaproмне тоже это интересно стало, но в объекте AutoFilter совсем мало свойств и данных о возможных значениях я не нашел. кроме того, список на экране отвечает не только за автофильтр, но и за сортировку (Excel2003)
Вы имеете ввиду, что этот список выдается автофильтром отсортированным? В ExcelXP тоже самое.
vbaproпоэтому значения в этот список могут попадать не из автофильтра
А вот это не понял.
в смысле, что кроме самого автофильтра, в раскрывающемся меню есть пункты для сортировки значений в колонке. Эти пункты запускают метод .Sort.
Поэтому я думаю, что своего рода «комбо», который мы видим на листе, не относится непосредственно к объекту АФ, а это другой какой-то объект, который сам собирает данные из своей колонки и просто предлагает для указания в АФ. А когда мы выбираем пункт, то запускает АФ с этим значением. А в самом объекте АФ этих уникальных значений нет. Это мое предположение.

А когда выбираешь УСЛОВИЕ. то открывается настройка пользовательского фильтра где уже есть комбобоксы с уникальными значениями поля.
Хочу сделать свою форму для настройки пользовательского фильтра. Как мне с меньшим гимороем получить комбобокс с уникальными значениями.
Позже выложу что будет получаться. А пока вопрос про уникальный комбобокс прошу вынести на обсуждение.
...
Рейтинг: 0 / 0
15.12.2008, 11:29
    #35714095
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
DeggasadКак мне с меньшим гимороем получить комбобокс с уникальными значениями.
Мы ж недавно рассматривали подобную задачу. Только там искались повторяющиеся значения в массиве, а тебе нужна обратаня задача - выбрать уникальные. Вот и выбирай из них ту, в которой содержание количества геморроя в единицу времени меньше всего
...
Рейтинг: 0 / 0
15.12.2008, 13:23
    #35714465
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
A-NikDeggasadКак мне с меньшим гимороем получить комбобокс с уникальными значениями.
Мы ж недавно рассматривали подобную задачу. Только там искались повторяющиеся значения в массиве, а тебе нужна обратаня задача - выбрать уникальные. Вот и выбирай из них ту, в которой содержание количества геморроя в единицу времени меньше всего

Просил подумать. Думал вдруг есть какой-нибуть элемент управления, у которого есть свойство - "показыать только уникальные значения" и я о нем не знаю. Все прочее тоже рассматривается. По сути задачка сделать что-то подобное пользовательскому фильтру автофильтра, только с использованием форм и макросов.
...
Рейтинг: 0 / 0
15.12.2008, 13:34
    #35714512
_slan_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
по-моему, самым быстрым является такой метод:

dim cl as new collection
dim arr
'dim filteredrange as range
dim i as long
on error resume next
arr=filteredrange
for i=1 to ubound(arr)
cl.add arr(i,1),arr(i,1)
next


и в коллекции cl имеем уникальные элементы

соответственно cl.count дает их количество.

работает быстрее, чем расширенный фильтр(с учетом помещения в массив)
...
Рейтинг: 0 / 0
15.12.2008, 13:46
    #35714554
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
Ну, если с помощью макроса - то самый быстрый способ - это отсортировать столбец где-нить в свободных ячейках, затем формулами отловить моменты, где предыдущая отличается от следующей. Затем сцепить эти значения через конструкцию Split(Join()," "), " "). Быстрее этого ничего нет! Даже расширенный фильтр с опцией "Только уникальные записи" тут "отдыхает" :-)
...
Рейтинг: 0 / 0
15.12.2008, 14:07
    #35714618
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
_slan_,
Выложи, плиз, готовый файл-пример с выводом результата уникальных значений, скажем, в рядомстоящий столбец. Интересно будет сравнить ;-)
...
Рейтинг: 0 / 0
15.12.2008, 15:06
    #35714835
_slan_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
A-Nik, я то как раз говорил о получении массива.. но можно и обратно в столбец.

держи
...
Рейтинг: 0 / 0
15.12.2008, 18:21
    #35715470
A-Nik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать все доступные значения при установке автофильтра
_slan_,
почувствуй разницу
Функция Union(), если она стоит в достаточно большом цикле, существенно замедляет работу!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Узнать все доступные значения при установке автофильтра / 25 сообщений из 78, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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