In an Excel pivot table, you can add text fields to the Row and Column areas, and in the Report Filters. However, pivot table Values area will only show numbers, so if you add a text field there, Excel shows a count of those text items. The technique shown below lets you show number fields as text Values, so you can display the names (East, West), instead of ID numbers (1, 2), for a small group of items.
Video: Show Pivot Table Values as Text
This technique uses a custom number format, applied with conditional formatting. For a few items, you can create the conditional formatting rules manually.
Watch this video to see the steps for setting up 3 ID numbers to show as names. You can learn more about Pivot Table conditional formatting on my Contextures website.
Custom Number Format
In this technique, a numeric field (RegID) is added to the pivot table Values area, and summarized by the Max function.
Next, custom number formats are applied as conditional formatting rules. For example, this rule displays “East” if the cell contains the number 1.
[=1]”East”;;
With that rule applied, you can see the number 1 in the Formula Bar, but the pivot table Values cell show the text, “East”.
Use a Macro
If you have several numbers, and want to create conditional formatting rules for them, it will be quicker to use a macro to set up the rules.
Thank you to Prof. Lee Townsend, who contributed the macro shown below. The code has an array of 3 numbers to change to region names. You can change those numbers and names, or add more, if necessary, to match your pivot table items.
For example, if you have 5 regions, change the regionNames and regionNumbers lines, to include all 5 items.
regionNames = _ Array("East", "Central", "West", "North", "South") regionNumbers = Array(1, 2, 3, 4, 5)
Macro to Set Rules
Here is the macro to set the conditional formatting rules with the custom number format. Add this code to a regular code module in your workbook. Then, select a cell in the pivot table, and run the macro.
Option Explicit Option Base 1 Sub ApplyCFArrays() 'by Prof. Lee Townsend 'downloaded from contextures.com 'select a pivot table cell 'then run this macro Dim CFRange As String Dim pvt As PivotTable Dim CellOne As String Dim colonLocation As Integer Dim iLoop As Long Dim regionNames As Variant Dim regionNumbers As Variant Dim currentName As String Dim quote As String regionNames = _ Array("East", "Central", "West") regionNumbers = Array(1, 2, 3) quote = Chr(34) On Error Resume Next Set pvt = ActiveCell.PivotTable On Error GoTo 0 If pvt Is Nothing Then MsgBox "Please select a pivot table" _ & vbCrLf _ & "cell and try again" Exit Sub End If 'find the location of the top left of 'the pivot table's DataBodyRange CFRange = pvt.DataBodyRange.Address colonLocation = InStr(CFRange, ":") CellOne = Left(CFRange, colonLocation - 1) CellOne = Replace(CellOne, "$", "") 'Start the conditional format rule CellOne = "=" & CellOne & "=" 'Set up the arrays ' https://stackoverflow.com/questions ' /39509796/is-there-a-way-to ' -assign-values-to-an-array ' -in-vba-using-a-single-line ReDim Preserve regionNames(1 _ To UBound(regionNames) + 1) ReDim Preserve regionNumbers(1 _ To UBound(regionNumbers) + 1) 'Set up the loop For iLoop = 1 To 3 currentName = "[=" _ & regionNumbers(iLoop) & "]" _ & quote & regionNames(iLoop) _ & quote & ";;" With Range(CFRange).FormatConditions _ .Add(Type:=xlExpression, _ Formula1:=CellOne _ & regionNumbers(iLoop)) .NumberFormat = currentName End With Next iLoop End Sub
Get the Sample File
To download the sample file, go to the Pivot Table Text Values page on my Contextures website. There are 2 files available – one has the macro, and the other file does not have any macros.
If you download the file with macros, be sure to enable macros, after you unzip the file and open it.
___________________________
Show Numbers as Text in Pivot Table Values
___________________________