powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Извлечение значений из фильтра
25 сообщений из 27, страница 1 из 2
Извлечение значений из фильтра
    #35117012
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые знатоки,
Есть афтофильтр, нужно извлечь из него в массив все значения. Пробовал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Dim arrFilter()
    Dim f%
    Dim intFilter As Integer
    intFilter =  1 
    ReDim arrFilter(intFilter)
    For f =  1  To ActiveSheet.Range("B1").AutoFilter.Filters.Count
        If intFilter =  1  Then
            arrFilter(intFilter -  1 ) = Range("B1").AutoFilter.Filters(f)
            Else
            intFilter = intFilter +  1 
            ReDim Preserve arrFilter(intFilter)
            arrFilter(intFilter -  1 ) = Range("B1").AutoFilter.Filers(f)
        End If
    Next
Ругается, говорит "Object required".
Что делаю не так?
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117085
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Уважаемые знатоки,
> Есть афтофильтр, нужно извлечь из него в массив все значения.
> Пробовал:

> Ругается, говорит "Object required".
> Что делаю не так?
Справку не читаеш это первое и второе не понятно, ты список условий хочеш
получить или результат действия автофильтра, т.е. отфильтрованные данные

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117093
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
Справку не читаеш это первое и второе не понятно, ты список условий хочеш
получить или результат действия автофильтра, т.е. отфильтрованные данные

Posted via ActualForum NNTP Server 1.4

Справку читал, но может что и просмотрел.
Хочу получить список условий.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117130
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: dd44
> Игорь Горбонос
>
> Справку не читаеш это первое и второе не понятно, ты список
> условий хочеш
> получить или результат действия автофильтра, т.е.
> отфильтрованные данные
>
>
> Справку читал, но может что и просмотрел.
> Хочу получить список условий.
Каких условий? фильтра?
вот из справки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String

Sub ChangeFilters()

Set w = Worksheets("Crew")
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray( 1  To .Count,  1  To  3 )
        For f =  1  To .Count
            With .Item(f)
                If .On Then
                    filterArray(f,  1 ) = .Criteria1
                    If .Operator Then
                        filterArray(f,  2 ) = .Operator
                        filterArray(f,  3 ) = .Criteria2
                    End If
                End If
            End With
        Next
    End With
End With

w.AutoFilterMode = False
w.Range("A1").AutoFilter field:= 1 , Criteria1:="S"

End Sub
найти: ставиш курсор на AutoFilter и F1

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117239
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Игорь,
Данный код собирает значения включеных фильтров, мне нужно собрать все значения фильтра столбца В в массив, при выключенном фильтре.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117282
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да,
Написание кода If Not .On Then ...
было бы выходом, но, как передать значение критериев? Croteria1, 2 и т.д. не устроит, так как количество будет постоянно меняться, а Criteria & f не работает.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117283
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: dd44
> Уважаемый Игорь,
> Данный код собирает значения включеных фильтров, мне нужно собрать
> все значения фильтра столбца В в массив, при выключенном фильтре.
во мудрено то как :-) я правильно понял что нужен список того что появляется
при нажатии на кнопку автофильтра???
если да то на bbs.vbstreets.ru кто-то это делал, поищи там

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117347
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый Игорь,
Ничего там не нашел (((
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117368
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что эта строка имеет проблему:

arrFilter(intFilter - 1) = Range("B1").AutoFilter.Filters(f)

Вы пытаетесь в массив Variant (кстати, не Object) внести фильтр (object) с индексом f, но вы этот объект не создаете (не вижу Set). Вот object и требуется. Но почему тогда вы object (недосетенный) засовываете в variant?
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117388
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый VladConn,
То что Вы написали мне не совсем понятно. У меня есть массив, куда я пытаюсь засунуть возможые значения фильтра, зачем тут что-то вводить, хотя возможо Вы правы.
Не подскажите мне тогда как это надо написать?
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117475
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тип массива не совпадает с типом того, что вы хотите в него вносить, а то, что вы хотите вносить (а именно фильтр), еще и не фильтр даже. Там нет Set и/или нет декларации As Filter.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117506
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Dim arrFilter() as Object
...
SET arrFilter(intFilter -  1 ) = Range("B1").AutoFilter.Filers(f)
...
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117558
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вы не хотите вносить фильтр, а хотите вносить его какие-то атрибуты? Тогда ваш код не отражает ваших намерений. Вот это вот:

Range("B1").AutoFilter.Filters(f)

есть ссылка на определение фильтра. Но так ее не используют. Надо бы Dim objF as Filter, Set objF = Range("B1").AutoFilter.Filters(f). Ну и так далее, если вы конечно хотите вносить фильтр, а не его свойства. Я не знаю, что вы хотите, т.к. ваш код противоречит вашему вопросу. Я не знаю, что вы имеете ввиду.

Вот посмотрите, Игорь Горбонос в сущности спрашивает вас о том же самом. Вот как он не видит, где нужно ставить мягкие знаки после шипящих (3й класс начальной школы), так вы не видите, где нужно вводить объекты в явном виде (если это требуется, конечно, что в вашем случае еще не факт).

Если у меня будет время, я попробую написать для вас работающий код.

Успехов

vladconn
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117559
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117680
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот сделал пример, который собирает в массив свойство Criteria1 всех задействованных фильтров. Обратите внимание: поскольку свойство Criteria1 имеет тип Variant, то и массив их значений тоже Variant, и только лишь поэтому.

Обратите также внимание на If Not objWsht.AutoFilter Is Nothing Then. Это на случай, если на листе нет вообще AutoFilter, не установлен. Попробуйте убрать эту строку и прогнать код без всякого AutoFilter на листе. Посмотрите на сгенерированную ошибку, что она вам скажет.

Успехов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Private Sub CommandButton1_Click()
    Dim objF As Filter
    Dim objWsht As Worksheet
    Dim varCriteria1() As Variant
    Dim intUBound As Integer
    
    Set objWsht = ThisWorkbook.Worksheets( 1 )
    
    If Not objWsht.AutoFilter Is Nothing Then
        
        For Each objF In objWsht.AutoFilter.Filters
            If objF.On Then
                intUBound = intUBound +  1 
            End If
        Next objF
    
        ReDim Preserve varCriteria1(intUBound)
        
        intUBound =  0 
        For Each objF In objWsht.AutoFilter.Filters
            If objF.On Then
                intUBound = intUBound +  1 
                varCriteria1(intUBound) = objF.Criteria1
            End If
        Next objF
    
    Else
        MsgBox "There is no Auto Filter at the sheet"
    End If
    
End Sub
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117698
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый VladConn,
Вы меня не поняли. Мне нужно собрать все возможные варианты выключенного фильтра.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117713
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так поставаьте так:

Код: plaintext
If NOT objF.On Then
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117727
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда вам вообще он не нужен. Соединитесь с ADO, напишите SELECT DISTINCT, и вперед.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117749
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneну так поставаьте так:

Код: plaintext
If NOT objF.On Then


И дальше что? Кто будет править датским королевством? Кто скажет вам, каков у вас приход? И сколько всадников не спит у вас в дозоре? Кто перепись ведет? Кто скажет, сколько новых душ должно родиться, а сколько отлететь? А королевство датское - от моря и до моря.
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117803
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый VladConn,
а можно ли через оператор Count получить количество вариантов в каждом фильтре, например Filters.Count, или то выдаст только количество столбцов в которых есть фильтр?
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117812
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или например FilterIndex.Count?
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117876
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: dd44
> Или например FilterIndex.Count?
Нет. Это все свойства самих фильтров, примененных.
чем не решение, для тебя вполне нормальное:
Автор: VladConn
Тогда вам вообще он не нужен. Соединитесь с ADO, напишите SELECT
DISTINCT, и вперед.
запиши макрос получения данных и будет щастье :))

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117898
dd44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
Тогда вам вообще он не нужен. Соединитесь с ADO, напишите SELECT
DISTINCT, и вперед.
запиши макрос получения данных и будет щастье :))

Posted via ActualForum NNTP Server 1.4

Уважаемый Игорь,
Наверное было бы счасте, но я с этим не знаком ((
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117929
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dd44Уважаемый VladConn,
а можно ли через оператор Count получить количество вариантов в каждом фильтре, например Filters.Count, или то выдаст только количество столбцов в которых есть фильтр?

Не думаю. Там кол-во столбцов. И Count - не оператор, а свойство. Вам, в сущности, надо знать, сколько уникальных значений содержится в каждом столбце. Ведь так? Ну так это SELECT DISTINCT.

Но я посмотрю, можно ли удобно обойтись без SELECT DISTINCT исключительно фильтром.

vladconn
...
Рейтинг: 0 / 0
Извлечение значений из фильтра
    #35117977
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В файле пример получения уникального списка из столбца. положить на диск с и не отключать макросы :)
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Извлечение значений из фильтра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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