我希望将我的数据透视表中的值转换为“0.0%”格式而不移动小数,例如1 - > 1%,不是100%。
我正在使用的代码产生“运行时错误'1004':无法更改数据透视表报表的这一部分”我的VBA数据透视表宏中的错误。代码是:
Sub Cost_Pivot()
NoOfOutputRows = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
NoOfCols = Worksheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Sheet1!R1C1:R" & NoOfOutputRows & "C" & NoOfCols, Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Sheet2!R1C1", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion12
Sheets("Sheet2").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Metric")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("CAM")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("CAM")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables("PivotTable1").PivotFields("Quantification"), "Sum of Quantification", xlSum
Range("A2").Select
ActiveSheet.PivotTables("PivotTable1").CompactLayoutRowHeader = "Metric"
Range("B1").Select
ActiveSheet.PivotTables("PivotTable1").CompactLayoutColumnHeader = "CAM"
ActiveSheet.PivotTables("PivotTable1").ColumnGrand = False
For Each ce In ActiveSheet.Range(Cells(1, 1), Cells(100, 100))
If IsNumeric(ce.Value) = True Then
ce.Value = ce.Value * 0.01
End If
Next ce
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Quantification")
.NumberFormat = "0.0%"
End With
End Sub
出现的错误位于ce.Value = ce.Value * .01,我想将单元格值乘以.01,然后再将它们转换为百分数格式。我阅读this文章说我必须创建一个计算值,但该文章与VBA无关,我不知道如何在宏中创建计算值。
有更好的解决方案吗?
答案 0 :(得分:3)
可能只需调整.Value
,而不是尝试更改单元格的.NumberFormat
,而不是:
ce.NumberFormat = "General\%"
这样,您不需要进行乘法运算。这是一种自定义数字格式,可在不影响基础数据的情况下呈现1
1%
,而不会影响基础数据。