Back to Devexpress

How to: Subtotal Fields in a Pivot Table

officefileapi-118502-spreadsheet-document-api-examples-pivot-tables-how-to-subtotal-fields-in-a-pivot-table.md

latest6.1 KB
Original Source

How to: Subtotal Fields in a Pivot Table

  • Sep 19, 2023
  • 3 minutes to read

This topic describes how to manage subtotals in a pivot table. Subtotals automatically appear for outer fields when you add multiple row and/or column fields to your report.

Select the task you wish to perform.

Show or Hide Subtotals For a Pivot Table

To show or hide subtotals in a PivotTable report, use the following methods of the PivotLayout object accessible using the PivotTable.Layout property.

MethodDescription
PivotLayout.ShowAllSubtotalsDisplays all subtotals in a pivot table.
The method’s topOfGroup parameter specifies the subtotal location for the outer row fields in compact or outline form.
PivotLayout.HideAllSubtotalsHides all subtotals in a pivot table.

The following code example displays all subtotals in a pivot table. Subtotals for the “Category” row field are shown at the bottom of each item in the field.

csharp
Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;

// Access the pivot table by its name in the collection.
PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// Show all subtotals at the bottom of each group.
pivotTable.Layout.ShowAllSubtotals(false);
vb
Dim worksheet As Worksheet = workbook.Worksheets("Report1")
workbook.Worksheets.ActiveWorksheet = worksheet

' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Show all subtotals at the bottom of each group.
pivotTable.Layout.ShowAllSubtotals(False)

The image below shows the resulting report (the workbook is opened in Microsoft® Excel®).

Modify Subtotals for a PivotTable Field

The table below describes properties and methods you can use to specify and adjust subtotals for a specific row or column field in a report.

|

Member

|

Description

| | --- | --- | |

PivotField.SetSubtotalAutomatic

|

Displays automatic subtotals for a given field.

| |

PivotField.SetSubtotal

|

Allows you to change the default summary calculation or to show multiple subtotals for a given field.

To remove subtotals for a field, pass the PivotSubtotalFunctions.None value to the method as a parameter.

| |

PivotSubtotalFunctions

|

Specifies summary functions used to calculate subtotals for a PivotTable field.

| |

PivotFieldLayout.SubtotalOnTop

|

Specifies the subtotal location for an outer row field shown in outline or compact form.

You can display subtotals at the top or bottom of the field’s items.

| |

PivotField.SubtotalCaption

|

Specifies the text to be displayed in the field’s subtotal row or column heading.

|

The following example demonstrates how to use multiple functions to subtotal the “Category” row field. To do this, combine the required PivotSubtotalFunctions enumeration values with a bitwise OR operator.

Note

You cannot change the subtotal function for a field containing a calculated item. In this case, a System.InvalidOperationException exception will be thrown.

View Example

csharp
Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;

// Access the pivot table by its name in the collection.
PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// Access the pivot field by its name in the collection.
PivotField field = pivotTable.Fields["Category"];
// Display multiple subtotals for the field.  
field.SetSubtotal(PivotSubtotalFunctions.Sum | PivotSubtotalFunctions.Average);
vb
Dim worksheet As Worksheet = workbook.Worksheets("Report1")
workbook.Worksheets.ActiveWorksheet = worksheet

' Access the pivot table by its name in the collection.
Dim pivotTable As PivotTable = worksheet.PivotTables("PivotTable1")
' Access the pivot field by its name in the collection.
Dim field As PivotField = pivotTable.Fields("Category")
' Display multiple subtotals for the field.  
field.SetSubtotal(PivotSubtotalFunctions.Sum Or PivotSubtotalFunctions.Average)

The image below shows the resulting report (the workbook is opened in Microsoft® Excel®).