2016-08-31 4 views
0

Я пытаюсь настроить автофильтр даты с диапазоном, выделенным из 2 ячеек.Использование значений ячеек в качестве автофильтра диапазона дат

После некоторых не удалось попыток, я решил сделать макрос с макро-строитель, чтобы я мог настроить его на выжженный на мой код, и я закончил с:

Dim fI As Range 
Dim fF As Range 

Set fI = Worksheets("Sheet1").Range("B26") 

Set fF = Worksheets("Control").Range("B27") 


    ActiveSheet.ListObjects("TABLE_REPORTS_GENERAL_INFO").Range _ 
     .AutoFilter Field:=24, Criteria1:=fI.Value, Operator:=xlAnd, _ 
     Criteria2:=fF.Value 

Даты в правильном формате , но он просто позволит фильтру очистить. Hardcoding даты работает, что я делаю неправильно? Структура

Мои даты:

Starting Date 01/08/2015 
Last Date 31/07/2016 

ответ

0

Вы назначаете свой второй диапазон fechaFin, но позже вы используете только fF, поэтому попробуйте назначить ваш диапазон так: Set fF = Worksheets("Control").Range("B27")

Потому что сейчас fF.Value является пустая строка, которая, вероятно, сбросит фильтр

1

Я заметил, что вы находитесь в формате даты DMY. Я постараюсь придерживаться этого регионального стандарта.

Используйте массив с типами данных как критерий2.

With ActiveSheet 
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO") 
     .Range.AutoFilter Field:=13, Operator:=xlFilterValues, _ 
      Criteria2:=Array(2, Format(fi.Value, "d/m/yyyy"), 2, Format(ff.Value, "d/m/yyyy")) 
    End With 
End With 

Это должно фильтровать для двух дат. Однако, если вам нужны все даты между датой начала и датой окончания, вам необходимо ввести операторов.

With ActiveSheet 
    With .ListObjects("TABLE_REPORTS_GENERAL_INFO") 
     .Range.AutoFilter Field:=13, _ 
      Criteria1:=Format(fi.Value, "\>\=d/m/yyyy"), Operator:=xlAnd, _ 
      Criteria2:=Format(ff.Value, "\<\=d/m/yyyy") 
    End With 
End With 
+1

Вы правы об использовании между датами, однако, я думаю, что вам нужно, чтобы избежать '<' (формат, например, '(Теперь, "\ <= d/м/год")'). Когда я тестировал 'format (Now," <= d/m/yyyy ")' в непосредственном окне, он возвращал '= d/m/yyyy8/31/2016 1:48:12 am' –

+0

Это вызывает ошибку, метод autofilter off class Range. – Pablo

+0

@ThomasInzina - Спасибо, что поймали это; Я закончил тем, что убежал от оператора и равных. – Jeeped

Смежные вопросы