Filters > Advanced Filter > Slicers Use Slicers to Set Advanced Filter CriteriaUse Excel Slicers to select criteria for an Advanced Filter, and show the matching records from the database. This makes it easy to view specific data, and keep the original records safe on a hidden worksheet. |
Use Slicers to Set Filter Criteria in ExcelTo make it easy to see specific data, while keeping the data safe, set up Slicers that you can use to filter the database in an Excel workbook. Then, just click a button, to run a macro that pulls the matching records from the database. The screen shot below shows how the Slicers and buttons work. You can download the sample file, and follow the instructions below, to see how it's built. Advantages of Advanced FiltersAdvanced Filters have several advantages over other ways of getting data from a table. For example, they:
Workbook SetupIn this example, there are 3 sheets used for the setup to use Slicers to set filter criteria in Excel:
On the SalesData sheet, there is a formatted Excel table, named Sales_Data. On the Pivot_Filters sheet, there is a pivot table based on that source data. That pivot table has 3 fields in the filter area, and no other fields. |
Add Pivot Table SlicersNext, Slicers were added, for each of those fields. After that, the Slicers were moved to the Output sheet, which will be used to show the filter results. How to Add SlicersIn this video you can see the steps for adding a slicer to a pivot table, and then using slicers to filter the data. The written steps are below the video To add a pivot table slicer, follow these steps:
The Insert Slicers dialog boxopens, with a list of fields from the pivot table source data.
Test the SlicersTo test the slicers, click the Slicer buttons in any of the Slicers that you added to the worksheet.
To remove the Slicer filters, click the Clear Filter button, at the top right of the Slicer |
Set Up a Criteria RangeThe macro will run an Advanced Filter, so a criteria range is required. This was set up on the Pivot_Filters sheet, with heading cells (D3:F3) and criteria cells (D4:F4). In cells D3:F3, formulas link the heading cells to the field names in the pivot table filters. Next, follow these steps to name the criteria range:
Formulas will be added to the criteria cells later. Create a Field ListOn the Output sheet, people will be able to select the fields that they want to see in the filter extract. The next step is to make a list of fields, and use that to create a data validation drop down list in each heading cell. To create a list of headings:
Name the Field ColumnThe field names will be used to create data validation drop down lists, so name that column in the table -- HeadingsList. |
Add Criteria SettingsIn the All column, for each field that has a Slicer, type the criteria setting that you want to use if the Slicer is cleared, and the pivot table filter shows "(All)". For the text fields, I entered an asterisk, and for the number fields I used ">0". You could use different criteria, based on your data. Get the "All" CriteriaBelow the Criteria range, another set of formulas will get the criteria setting from our table, for cases when "All" is selected. The formula uses the INDEX and MATCH functions to pull the values from the Field List table. Enter the following formula in cell D7, and copy it across to F7 =INDEX(tblHead[[All]:[All]],MATCH(D3,HeadingsList,0)) The formula looks for the field name in cell D3, and finds its match in the HeadingsList range. Then, it returns the value from the All column in that row. Add the Criteria FormulasNext, we'll add formulas in the criteria row, to use with the Advanced Filter. Each formula is slightly different, and refers to its field name and value in the pivot table filters. The formula checks the field in the source data, to see if the selected item appears.
Enter the following formula in cell D4: =IF(COUNTIF(INDIRECT("Sales_Data[" & A3 & "]"),B3),B3,D7) Enter the following formula in cell E4: =IF(COUNTIF(INDIRECT("Sales_Data[" & A4 & "]"),B4),B4,E7) Enter the following formula in cell F4: =IF(COUNTIF(INDIRECT("Sales_Data[" & A5 & "]"),B5),B5,F7) Here's the result, if none of the Slicers are cleared. I've used grey fill on all the cells with formulas. The Advanced Filter would return all the records in the Sales_Data table Here's the result, after selections are made in the Category and Orderyr Slicers. The Advanced Filter would return all the records for Snacks sales in 2016, for any Region. Add the Macro CodeNext, you'll add the macro -- GetDataForSlicersSel -- that runs an Advanced Filter. Add the following code to a regular module in the workbook: |
Sub GetDataForSlicersSel() Dim wsPF As Worksheet Dim wsSD As Worksheet Dim wsOP As Worksheet Set wsPF = Sheets("Pivot_Filters") Set wsSD = Sheets("SalesData") Set wsOP = Sheets("Output") wsSD.Range("Sales_Data[#All]").AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=wsPF.Range("CritSlicers"), _ CopyToRange:=wsOP.Range("ExtractSlicers"), _ Unique:=False End Sub
Add the Macro ButtonThe final step is to add a button to run the GetDataForSlicersSel macro.
Note: After you have assigned a macro to a shape, you can select the shape by right-clicking on it. Test the ButtonTo test the button, select an item from each Slicer, then click the button. You should see the matching records below the extract range headings. Then, change one of the extract range headings, and click the Get Data button again. The data in the changed column should be the only data that changes. Get the Sample FileFor a zipped workbook with the "Use Slicers to Set Filter Criteria in Excel" example, click here. The zipped file is in xlsm format, so enable macros when you open the file. |
More Filter Tutorials |
Last updated: August 5, 2022 9:50 AM