首页 > 解决方案 > 创建数据透视表以包含 xlSum 数字格式的小数

问题描述

我正在使用一些 vba 代码从头开始创建数据透视表。它工作得几乎完美,所以我不打算彻底检查代码。

只有一个问题......数据中的数字包括小数,但是一旦我创建了数据透视表,表中的数字不包括小数位,包括总计。

我需要表格来显示原始数据中的小数,尤其是在总计字段中。搜索该站点后,我无法在数据透视表 VBA 上找到任何细节级别的信息。这是我目前正在使用的 VBA。

Sub Pivot_Table()

Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long

'Insert a New Blank Worksheet
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("Cash AR195").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "Cash AR195"
Application.DisplayAlerts = True
Set PSheet = Worksheets("Cash AR195")
Set DSheet = Worksheets("AR195 Detail")

'Define Data Range
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="AR195Totals")

'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="AR195Totals")

'Insert Row Fields
With ActiveSheet.PivotTables("AR195Totals").PivotFields("Batch #")
.Orientation = xlRowField
.Position = 1
.Name = "Batch # "
End With

'Insert Data Field
With ActiveSheet.PivotTables("AR195Totals").PivotFields("Amount")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Amount "
End With

'Format Pivot Table
ActiveSheet.PivotTables("AR195Totals").ShowTableStyleRowStripes = True
ActiveSheet.PivotTables("AR195Totals").TableStyle2 = "PivotStyleMedium9"

End Sub

在我运行 VBA 后,我还将包含一些数据字段的图像和数据透视表。

原始数据

数据透视表数据

这可能看起来很小,但我绝对需要包括小数。它可能是我错过的非常简单的事情,但我正在努力获得正确的数字格式以在最终产品(数据透视表)中包含小数点。

提前感谢您的任何帮助,非常感谢!

标签: vbaexcelpivot-table

解决方案


好吧,我不敢相信我错过了这个......但我在发布后不久就解决了我自己的问题。

我刚刚在字段中添加了小数点.NumberFormat =。这里是更新......

'Insert Data Field
With ActiveSheet.PivotTables("AR195Totals").PivotFields("Amount")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
.NumberFormat = "#,###.##"
.Name = "Amount "
End With

我很敬畏我之前没有注意到这一点……无论如何,谢谢大家!


推荐阅读