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

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

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

У меня такая конструкция в ExcelXP не работает. И не пойму, FilteredRange это свойство какого объекта?
...
Рейтинг: 0 / 0
Узнать все доступные значения при установке автофильтра
    #34006680
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FilteredRange - а это что?
диапозон на который установлен фильтр?
...
Рейтинг: 0 / 0
Узнать все доступные значения при установке автофильтра
    #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
Узнать все доступные значения при установке автофильтра
    #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
Узнать все доступные значения при установке автофильтра
    #34007008
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Чето я ступил с этим FilteredRange.

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

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

Код: plaintext
1.
2.
3.
    Dim r As Range
    Set r = ActiveSheet.AutoFilter.Range.Rows.SpecialCells(xlCellTypeVisible)
    MsgBox r.Address
...
Рейтинг: 0 / 0
Узнать все доступные значения при установке автофильтра
    #35193924
LETME
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем принципиально отличается Автофильтр от Комбобокса сводной таблицы?
Про перебор значений в комбобоксе сводной таблицы на VBA имеется простой пример в стандартной справке...
...
Рейтинг: 0 / 0
Узнать все доступные значения при установке автофильтра
    #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
Узнать все доступные значения при установке автофильтра
    #35713842
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbapro k-nike vbaproмне тоже это интересно стало, но в объекте AutoFilter совсем мало свойств и данных о возможных значениях я не нашел. кроме того, список на экране отвечает не только за автофильтр, но и за сортировку (Excel2003)
Вы имеете ввиду, что этот список выдается автофильтром отсортированным? В ExcelXP тоже самое.
vbaproпоэтому значения в этот список могут попадать не из автофильтра
А вот это не понял.
в смысле, что кроме самого автофильтра, в раскрывающемся меню есть пункты для сортировки значений в колонке. Эти пункты запускают метод .Sort.
Поэтому я думаю, что своего рода «комбо», который мы видим на листе, не относится непосредственно к объекту АФ, а это другой какой-то объект, который сам собирает данные из своей колонки и просто предлагает для указания в АФ. А когда мы выбираем пункт, то запускает АФ с этим значением. А в самом объекте АФ этих уникальных значений нет. Это мое предположение.

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

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

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


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