Страницы: 1
RSS
Определение порядка применения фильтра
 
Добрый день

Есть таблица из нескольких столбцов. В таблице включен автофильтр. Фильтрация ведется по двум столбцам.
Возможно ли программно (т.е. средствами VBA) определить по какому из столбцов фильтр был применен сначала, а по какому столбцу во вторую очередь?
 
Упс... напутал с вопросом - не на тот ответил. :)

P.S. Кажись, нашел! :)
Записал рекордером добавку автофильтра и сортировку по двум столбцам А и С
Количество примененных сортировок можно посчитать
Код
ActiveWorkbook.Worksheets("Name").AutoFilter.Sort.SortFields.Count


А потом посмотреть адрес первого (например) поля сортировки
Код
Debug.Print ActiveWorkbook.Worksheets("Name").AutoFilter.Sort.SortFields.Item(1).Key.Address
Изменено: Пытливый - 04.12.2015 11:20:46
Кому решение нужно - тот пример и рисует.
 
А еще потом можно выводить в МsgBox'ы обозначения столбцов, по которым идет сортировка:
Код
For intI =1 to ActiveWorkbook.Worksheets("Name").AutoFilter.Sort.SortFields.Count
MsgBox "Отсортировано по " & Left(ActiveWorkbook.Worksheets("Name").AutoFilter.Sort.SortFields.Item(intI).Key.Address,2)
Next

:)
Как-то так, мне кажется.
Изменено: Пытливый - 04.12.2015 11:36:02
Кому решение нужно - тот пример и рисует.
 
Спасибо за ответ, но мне кажется Вы меня не так поняли :-)

Попробую более точно передать задачу.
Есть таблица, например, из 3-х столбцов A, B, C. Фильтр применяем сначала по столбцу А, затем по В. В столбце С помещаем результат каких-либо вычислений, зависящий от значений в столбцах А и В. Затем пользователь может сначала отфильтровать по столбцу В, затем по А. Тогда в С значения будут рассчитываться по другому методу. Строгой очередности применения фильтра не задано. Вот мне и надо определить по какому столбцу пользователь первым применил фильтра, а по какому столбцу во вторую очередь
 
Так я ж и говорю (см.пост №2) - сначала считаем, сколько в автофильтре сортировок (а то вдруг нет сортировок там вообще?).
Потом определяем диапазон первой, второй, третьей сортировки (ну, сколько будет).
А определив диапазон сортировки (первой, например), мы его можем вывести в МsgBox, записать в переменную, еще как-то использовать...
Кому решение нужно - тот пример и рисует.
 
А разве фильтр и сортировка это одно и тоже?
В моем понимании сортировка - это выстроить в определенном порядке, а фильтр это показать определенные значения из набора данных
 
А, ок, тогда без автофильтра:
Код
ActiveWorkbook.Worksheets("Name").Sort.SortFields.Count
'считаем, по какому количеству диапазонов сортировали
ActiveWorkbook.Worksheets("Name").Sort.SortFields.Item(1).Key.Address 
'адрес диапазона, по которому сортировали первым
ActiveWorkbook.Worksheets("Name").Sort.SortFields.Item(2).Key.Address 
'адрес диапазона, по которому сортировали вторым


P.S. Фильтр и сортировка - это не одно и тоже. Но! Сортировать можно как диапазон, с включенным автофильтром, так и диапазон без фильтра.
Если фильтр в диапазоне есть - то отслеживать сортировку по коду из сообщения #2

А если фильтра в диапазоне нет - то код выше в этом сообщении
Изменено: Пытливый - 07.12.2015 16:32:53
Кому решение нужно - тот пример и рисует.
 
Большое спасибо за огромное желание помочь. Но....
Вы невнимательно читаете про мою проблему.
Мне не нужна сортировка, мне нужна ФИЛЬТРАЦИЯ ))) Т.е. в моей задаче данные не сортируются. Т.е. Sort применять не получается
Изменено: korsar_75 - 08.12.2015 05:14:59
 
Доброе время суток
А в чём смысл всего этого действия? Ваше описание разницы расчётов от порядка фильтрации столбцов прояснений не даёт. Различные же вычисления будут применяться, на мой взгляд, к результату фильтрации, то есть к видимым строкам, оставшимся после выборки. Вот на основании этого, того что осталось видимым, и применяйте различные вычисления.
 
Добрый день

Андрей вы правы. Разные методы будут применяться к результатам фильтрации. Но для того чтобы определить какие ячейки остались отфильтрованными, необходимо будет писать обработку, которая проанализирует содержимое отфильтрованных ячеек, а затем выберет методику расчетов.
Вот и подумал, что возможно есть способ упростить себе работу немножко
Страницы: 1
Наверх