Sub SortPivot()
Dim strSortFields, aryFields, tbl As Range, piv As Object, i As Long
Dim order As Long
strSortFields = "-l;-k;-j" ' + means Ascending; - means descending; if ommitted, Ascending is assumed.
aryFields = Split(strSortFields, ";")
Set tbl = ActiveSheet.PivotTables(1).TableRange1
Set tbl = tbl.Offset(2, 0).Resize(tbl.Rows.Count - 2)
' radix sort starts with least important sort field.
For i = UBound(aryFields) To LBound(aryFields) Step -1
order = xlAscending
Select Case Left(aryFields(i), 1)
Case "-": order = xlDescending: aryFields(i) = Mid(aryFields(i), 2)
Case "+": aryFields(i) = Mid(aryFields(i), 2)
End Select
tbl.Sort Key1:=Intersect(tbl, Columns(aryFields(i))), Order1:=order, Type _
:=xlSortValues, OrderCustom:=1, Orientation:=xlTopToBottom
Next i
End Sub
gowflow