|
こんにちは。かみちゃん です。
>2)1.は、この通り8にしたいのですが、この集計結果8を3.の行に表示したい
> ので、上記のダブルクリックでの設定でやろうとしましたが駄目でした。
> そこで、手集計(sum関数)で入れたのですが、これでは毎回位置が変わるので
> 自動記録では今回のみにしか通用しない
その通りです。やっと気づいていただけましたか?
自動記録で100%できるとは、誰も申し上げていません。
多少の修正は必要になります。
ですから、今回のみにしか通用しなくても自動記録はできるはずです。
その記録したコードをどのようなデータでも対応できるように修正すればいいわけ
で、修正の仕方がわからなければ、元データと期待している結果と、現在得られている
結果をきちんと説明すれば、いくらでもアドバイスはさせていただきます。
しかし、今回の場合、毎回、「手集計(sum関数)」をしているのですか?
本当は、手作業の手順は確立されているのではないのですか?
それとも、手間がかかるのは、この部分で、手順もあやふやなのではないでしょうか?
つまり、ピボットテーブルの作り方が間違っていると思います。
あまり長々とスレッドを伸ばすも、本意ではないので、[59005]で提示された
コードのうち、最後の
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量")
.Orientation = xlRowField
.Position = 3
End With
ActiveSheet.PivotTables("ピボットテーブル2").AddDataField ActiveSheet.PivotTables( _
"ピボットテーブル2").PivotFields("商品名"), "データの個数 / 商品名", xlCount
ActiveWindow.SmallScroll Down:=-3
を削除して、以下のコードを最後に追加してください。
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("出荷数量")
.Orientation = xlDataField
.Function = xlSum '合計
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("商品名")
.Orientation = xlDataField
.Function = xlCount 'データの個数
.Position = 2
End With
With ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
' '「特級」を先頭に移動
' ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("等級").PivotItems("特級"). _
' Position = 1
'「倉庫」ごとの集計をしない
ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
Range("C6").Select
'列と行の総計を非表示
With ActiveSheet.PivotTables("ピボットテーブル2")
.ColumnGrand = False
.RowGrand = False
End With
'項目名の変更
ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField.PivotItems("合計 / 出荷数量"). _
Caption = "出荷数"
ActiveSheet.PivotTables("ピボットテーブル2").DataPivotField.PivotItems( _
"データの個数 / 商品名").Caption = "行数"
ActiveWorkbook.ShowPivotTableFieldList = False
Application.CommandBars("PivotTable").Visible = False
'列全体を指定している場合、「(空白)」が集計するため非表示にする
With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("倉庫")
.PivotItems("(空白)").Visible = False
End With
MsgBox "データを集計しました"
これらのコードは、ピボットテーブルの一般操作を「マクロの記録」で記録しただけです。
今一度、ピボットテーブルの一般操作をご確認ください。
|
|