How to: Filter Items in a Pivot Table
- 8 minutes to read
The Spreadsheet Control provides numerous ways to filter items in a pivot table. Different types of filters are available: you show or hide specific items, construct the filter expression to display item labels that meet the given criteria (Label Filters and Date Filters), or filter a field based on summary values in the data area (Value Filters).
The table below describes API members that allow you to apply a filter to a PivotTable field.
Member | Description |
---|---|
PivotField.ShowSingleItem | Displays the specified item in the PivotTable field. |
PivotItem.Visible | Specifies whether the current item is displayed in the field. |
PivotTable.Filters | Provides access to the collection of filters applied to a pivot table. |
PivotFilterCollection.Add | Applies a filter to the specified row or column field. |
PivotFilterType | Specifies the type of the filter to be applied to the PivotTable field. |
PivotFilter | Represents a filter applied to the PivotTable field. |
PivotFilter.Field | Returns the PivotTable field to which the current filter is applied. |
PivotFilter.Value | Returns the first filter criteria value. |
PivotFilter.SecondValue | Returns the second filter criteria value. |
PivotFilter.MeasureField | Returns the data field used by the current value filter. |
PivotFilter.Top10Type | Specifies the type of the “Top 10” value filter. |
Select the task you wish to perform.
- Show or Hide Specific Items
- Use a Label Filter
- Use a Date Filter
- Use a Value Filter
- Use a Top 10 Filter
- Use Multiple Filters per Field
- Remove a Filter
Show or Hide Specific Items
The following example uses a report filter to filter the entire pivot table to show sales data for the Northeastern region. Before using the report filter, make sure that the corresponding field is added to the report filter area of your PivotTable report.
Worksheet worksheet = workbook.Worksheets["Report4"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// Access the pivot table by its name in the collection.
PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// Move the "Region" field to the report filter area.
pivotTable.PageFields.Add(pivotTable.Fields["Region"]);
// Select the second (Northeast) item in the "Region" field.
pivotTable.Fields["Region"].ShowSingleItem(1);
Use a Label Filter
The following example demonstrates how to apply a label filter to the “Region” column field to display sales data only for the Southern region.
Tip
To perform more versatile filtering, you can use wildcard characters. The asterisk * matches any number of characters, while the question mark ? represents a single character. To filter labels containing a specific character, such as the asterisk, question mark or tilde, put the tilde (~) before it.
Dim worksheet As Worksheet = workbook.Worksheets("Report4")
workbook.Worksheets.ActiveWorksheet = worksheet
' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Access the "Region" field.
Dim field As PivotField = pivotTable.Fields(0)
' Filter the "Region" field by text to display sales data for the "South" region.
pivotTable.Filters.Add(field, PivotFilterType.CaptionEqual, "South")
Use a Date Filter
The following example demonstrates how to apply a filter to the “Date” row field to show sales data for the second quarter.
Dim worksheet As Worksheet = workbook.Worksheets("Report6")
workbook.Worksheets.ActiveWorksheet = worksheet
' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Access the "Date" field.
Dim field As PivotField = pivotTable.Fields(0)
' Filter the "Date" field to display sales for the second quarter.
pivotTable.Filters.Add(field, PivotFilterType.SecondQuarter)
Use a Value Filter
The following example demonstrates how to apply a value filter to the “Product” row field to display products whose total sales fall between $6000 and $13000.
Dim worksheet As Worksheet = workbook.Worksheets("Report4")
workbook.Worksheets.ActiveWorksheet = worksheet
' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Access the "Product" field.
Dim field As PivotField = pivotTable.Fields(1)
' Filter the "Product" field to display products with grand total sales between $6000 and $13000.
pivotTable.Filters.Add(field, pivotTable.DataFields(0), PivotFilterType.ValueBetween, 6000, 13000)
Use a Top 10 Filter
A “Top 10” value filter allows you to display the specified number of top or bottom items in a field (PivotFilterType.Count), show the top or bottom values that contribute to the specified percent of the filtered field’s grand total (PivotFilterType.Percent), or filter the top or bottom values that make up a specific sum (PivotFilterType.Sum).
The following example demonstrates how to apply the “Top 10” filter to the “Product” row field to display two products with the lowest total sales.
Dim worksheet As Worksheet = workbook.Worksheets("Report4")
workbook.Worksheets.ActiveWorksheet = worksheet
' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Access the "Product" field.
Dim field As PivotField = pivotTable.Fields(1)
' Filter the "Product" field to display two products with the lowest sales.
Dim filter As PivotFilter = pivotTable.Filters.Add(field, pivotTable.DataFields(0), PivotFilterType.Count, 2)
filter.Top10Type = PivotFilterTop10Type.Bottom
Use Multiple Filters per Field
To enable the capability to apply multiple filters to a single row or column field, set the PivotBehaviorOptions.AllowMultipleFieldFilters property to true. By default, this property is false and if you try to apply more than one filter to a PivotTable field, only the last specified filter will be applied.
Dim worksheet As Worksheet = workbook.Worksheets("Report6")
workbook.Worksheets.ActiveWorksheet = worksheet
' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Allow multiple filters for a field.
pivotTable.Behavior.AllowMultipleFieldFilters = True
' Filter the "Date" field to display sales for the second quarter.
Dim field1 As PivotField = pivotTable.Fields(0)
pivotTable.Filters.Add(field1, PivotFilterType.SecondQuarter)
' Add the second filter to the "Date" field to display two days with the lowest sales.
Dim filter As PivotFilter = pivotTable.Filters.Add(field1, pivotTable.DataFields(0), PivotFilterType.Count, 2)
filter.Top10Type = PivotFilterTop10Type.Bottom
Remove a Filter
Clear a specific filter
You can remove a filter applied to a PivotTable field using one of the methods listed in the table below.
Method Description PivotFilter.Delete Removes the current filter from the collection of filters applied to a pivot table. PivotFilterCollection.Remove Removes the specified filter from the collection of filters applied to a pivot table. PivotFilterCollection.RemoveAt Removes the filter at the specified index from the collection of filters applied to a pivot table. PivotField.ShowAllItems Redisplays all items in the specified PivotTable field. // Access the pivot table by its name in the collection. PivotTable pivotTable = worksheet.PivotTables["PivotTable1"]; // Apply a filter to the "Region" field. PivotFilter labelFilter = pivotTable.Filters.Add(pivotTable.Fields["Region"], PivotFilterType.CaptionEqual, "South"); // Remove the specified filter. labelFilter.Delete();
Clear all filters
To remove all filters applied to the row and column fields of the PivotTable report at once, use the PivotFilterCollection.Clear method.