ピボット テーブルの値を小数点を移動せずに "0.0%" 形式に変換したい (例: 1 --> 1%、100% ではない)。
使用しているコードは、VBA ピボット テーブル マクロで「実行時エラー '1004': ピボットテーブル レポートのこの部分を変更できません」というエラーを生成します。コードは次のとおりです。
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 で乗算してからパーセント数値形式に変換したいと考えています。計算値を作成しなければならないという記事を読んだのですが、VBA関連の記事ではなく、マクロで計算値を作成する方法がわかりません。
より良い解決策はありますか?