# PHPExcel AutoFilter Reference ## Autofilter Expressions ### Dynamic Filters Dynamic Filters are based on a dynamic comparison condition, where the value we're comparing against the cell values is variable, such as 'today'; or when we're testing against an aggregate of the cell data (e.g. 'aboveAverage'). Only a single dynamic filter can be applied to a column at a time. ![04-04-dynamic-autofilter.png](./images/04-04-dynamic-autofilter.png "") Again, we start by specifying a Filter type, this time a DYNAMICFILTER. ```php $columnFilter->setFilterType( PHPExcel_Worksheet_AutoFilter_Column::AUTOFILTER_FILTERTYPE_DYNAMICFILTER ); ``` When defining the rule for a dynamic filter, we don't define a value (we can simply set that to NULL) but we do specify the dynamic filter category. ```php $columnFilter->createRule() ->setRule( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_COLUMN_RULE_EQUAL, NULL, PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE ) ->setRuleType( PHPExcel_Worksheet_AutoFilter_Column_Rule::AUTOFILTER_RULETYPE_DYNAMICFILTER ); ``` We also set the rule type to DYNAMICFILTER. The valid set of dynamic filter categories is defined in the PHPExcel_Worksheet_AutoFilter_Column_Rule class, and comprises: Operator Constant | Value | -----------------------------------------|----------------| AUTOFILTER_RULETYPE_DYNAMIC_YESTERDAY | 'yesterday' | AUTOFILTER_RULETYPE_DYNAMIC_TODAY | 'today' | AUTOFILTER_RULETYPE_DYNAMIC_TOMORROW | 'tomorrow' | AUTOFILTER_RULETYPE_DYNAMIC_YEARTODATE | 'yearToDate' | AUTOFILTER_RULETYPE_DYNAMIC_THISYEAR | 'thisYear' | AUTOFILTER_RULETYPE_DYNAMIC_THISQUARTER | 'thisQuarter' | AUTOFILTER_RULETYPE_DYNAMIC_THISMONTH | 'thisMonth' | AUTOFILTER_RULETYPE_DYNAMIC_THISWEEK | 'thisWeek' | AUTOFILTER_RULETYPE_DYNAMIC_LASTYEAR | 'lastYear' | AUTOFILTER_RULETYPE_DYNAMIC_LASTQUARTER | 'lastQuarter' | AUTOFILTER_RULETYPE_DYNAMIC_LASTMONTH | 'lastMonth' | AUTOFILTER_RULETYPE_DYNAMIC_LASTWEEK | 'lastWeek' | AUTOFILTER_RULETYPE_DYNAMIC_NEXTYEAR | 'nextYear' | AUTOFILTER_RULETYPE_DYNAMIC_NEXTQUARTER | 'nextQuarter' | AUTOFILTER_RULETYPE_DYNAMIC_NEXTMONTH | 'nextMonth' | AUTOFILTER_RULETYPE_DYNAMIC_NEXTWEEK | 'nextWeek' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_1 | 'M1' | AUTOFILTER_RULETYPE_DYNAMIC_JANUARY | 'M1' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_2 | 'M2' | AUTOFILTER_RULETYPE_DYNAMIC_FEBRUARY | 'M2' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_3 | 'M3' | AUTOFILTER_RULETYPE_DYNAMIC_MARCH | 'M3' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_4 | 'M4' | AUTOFILTER_RULETYPE_DYNAMIC_APRIL | 'M4' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_5 | 'M5' | AUTOFILTER_RULETYPE_DYNAMIC_MAY | 'M5' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_6 | 'M6' | AUTOFILTER_RULETYPE_DYNAMIC_JUNE | 'M6' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_7 | 'M7' | AUTOFILTER_RULETYPE_DYNAMIC_JULY | 'M7' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_8 | 'M8' | AUTOFILTER_RULETYPE_DYNAMIC_AUGUST | 'M8' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_9 | 'M9' | AUTOFILTER_RULETYPE_DYNAMIC_SEPTEMBER | 'M9' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_10 | 'M10' | AUTOFILTER_RULETYPE_DYNAMIC_OCTOBER | 'M10' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_11 | 'M11' | AUTOFILTER_RULETYPE_DYNAMIC_NOVEMBER | 'M11' | AUTOFILTER_RULETYPE_DYNAMIC_MONTH_12 | 'M12' | AUTOFILTER_RULETYPE_DYNAMIC_DECEMBER | 'M12' | AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_1 | 'Q1' | AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_2 | 'Q2' | AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_3 | 'Q3' | AUTOFILTER_RULETYPE_DYNAMIC_QUARTER_4 | 'Q4' | AUTOFILTER_RULETYPE_DYNAMIC_ABOVEAVERAGE | 'aboveAverage' | AUTOFILTER_RULETYPE_DYNAMIC_BELOWAVERAGE | 'belowAverage' | We can only apply a single Dynamic Filter rule to a column at a time.