Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Как вывести значение фильтра в заданную ячейку?


Автор: Валк 26.5.2006, 07:09
Условия: в автофильтре выставляется условие (больше или равно "значение1" и меньше или равно "значение2").
Задача: как сделать так, чтобы "значение1" и "значение2" появились в ячейке (допустим) А1 и В2?

Условия можно переменить: в ячейке А1 выставлено "значение1", в ячейке В2 выставлено "значение2".
Задача: как сделать так, чтобы автоматически (при выполнении определённого макроса, например) в таблице делалась выборка по условию (больше или равно "значение1" и меньше или равно "значение2")? 

Автор: Staruha 26.5.2006, 21:26
вариантов несколько.Можно цикл запустить с услвием 
Код

If значение1>Range("A1") and зн-е2 <Range("B2")

, выполнить SQL
 а лучше воспользоваться готовым средством Расширенный фильтр.Мона и макрос записать с помощью записать макрос и нажать на Расширенный фильтр  

Автор: Aloha 26.5.2006, 22:48
Валк
Цитата
Условия: в автофильтре выставляется условие (больше или равно "значение1" и меньше или равно "значение2").
Задача: как сделать так, чтобы "значение1" и "значение2" появились в ячейке (допустим) А1 и В2?

Пусть, например,  "значение1" = 2, "значение2" = 4.
Т.е. имеем условие:     >=2 И <=4.
Тогда (при условии, что фильтр на листе "Лист1", отфильтрован 1-й столбец с условием  >=2 И <=4)
Код
Debug.Print Worksheets("Лист1").AutoFilter.Filters(1).Criteria1

вернет   >=2

Код
Debug.Print Worksheets("Лист1").AutoFilter.Filters(1).Criteria2

вернет   <=4

Код
Debug.Print Worksheets("Лист1").AutoFilter.Filters(1).Operator

вернет   1,   что соответствует константе xlAnd

Цитата
Условия можно переменить: в ячейке А1 выставлено "значение1", в ячейке В2 выставлено "значение2".
Задача: как сделать так, чтобы автоматически (при выполнении определённого макроса, например) в таблице делалась выборка по условию (больше или равно "значение1" И меньше или равно "значение2")? 

Следующий код делает это:
Код
Worksheets("Лист1").Cells.AutoFilter _
          Field:=1, _
          Criteria1:=">=" & Worksheets("Лист1").Range("A1"), _
          Operator:=xlAnd, _
          Criteria2:="<=" & Worksheets("Лист1").Range("B2")

   

Автор: Валк 27.5.2006, 14:34
Aloha
Код

Worksheets("Лист1").Cells.AutoFilter _
          Field:=1, _
          Criteria1:=">=" & Worksheets("Лист1").Range("A1"), _
          Operator:=xlAnd, _
          Criteria2:="<=" & Worksheets("Лист1").Range("B2")



Мне кажется это почти самое то.

Чуть-чуть усложним задачу.
Столбец, в котором будет действовать автофильтр по условию, находится на "Лист1" и пусть он будет столбцом "Х". Ячейки, в которых будут выставляться условия должны находится на "Лист2".

Это уже будет конкретным решением для моей задачи. 

Автор: Aloha 27.5.2006, 15:10
Валк
Код
Worksheets("Лист1").Cells.AutoFilter _
          Field:=1, _
          Criteria1:=">=" & Worksheets("Лист2").Range("A1"), _
          Operator:=xlAnd, _
          Criteria2:="<=" & Worksheets("Лист2").Range("B2")

Значение параметра Field не связано с конкретным положением автофильтра на рабочем листе. Данный параметр определяет просто номер столбца в автофильтре. 

Автор: Валк 29.5.2006, 12:26
Aloha, не работает  smile 
Не могу понять почему. В моём случае столбец по которому делатся выборка по условию - "Х". Где в твоём примере указан этот параметр? 

Автор: Aloha 29.5.2006, 14:41
Валк
С удовольствием помогу, но давай перенесем наше общение в личку. Все происходящее вряд ли представляет для других интерес. 

Автор: Валк 31.5.2006, 07:50
Конечный вариант макроса по второму варианту первого сообщения:
Код

Worksheets("БазаДС_Руб").Cells.AutoFilter _
        Field:=25, _
        Criteria1:=">=" & CLng(Worksheets("Ведомость").Cells(2, 3)), _
        Operator:=xlAnd, _
        Criteria2:="<=" & CLng(Worksheets("Ведомость").Cells(2, 7))

Макрос составлен Aloha.
От себя хочу горячо поблагодарить его, спасибо. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)