Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


661 / 13645 ツリー ←次へ | 前へ→

【79156】ピボットテーブル自動作成 yu__ka 17/5/26(金) 12:56 質問[未読]
【79157】Re:ピボットテーブル自動作成 とおりすがり 17/5/26(金) 13:04 発言[未読]
【79158】Re:ピボットテーブル自動作成 yu__ka 17/5/26(金) 13:55 質問[未読]
【79161】Re:ピボットテーブル自動作成 マナ 17/5/26(金) 18:27 発言[未読]
【79163】Re:ピボットテーブル自動作成 マナ 17/5/27(土) 16:22 発言[未読]
【79164】Re:ピボットテーブル自動作成 yu_ka 17/5/27(土) 19:23 お礼[未読]

【79156】ピボットテーブル自動作成
質問  yu__ka  - 17/5/26(金) 12:56 -

引用なし
パスワード
   ピボットテーブルを自動作成しようと、
下記の通り記述しました。
しかし、金額フィールドの表示形式のところで、
「参照が不正または不完全です。」
とエラーになります。
どの箇所を修正すれば、データフィールドの金額に桁区切りカンマを
設定できるのでしょうか?
宜しくお願い致します。


'【商品コードごとの売上金額を集計シートにまとめる。】

Sub ピボットテーブル作成()
Dim DataS As Worksheet 'データシート
Dim PivotS As Worksheet 'ピボットテーブルを作成するシート
Dim PCache As PivotCache 'ピボットキャッシュ用変数

Set DataS = ThisWorkbook.Worksheets("ソート")

'『ソート』シートからピボットキャッシュを作成

 Set PCache = ActiveWorkbook.PivotCaches.Create( _
 SourceType:=xlDatabase, _
 SourceData:=DataS.Range("a1").CurrentRegion)

'『集計』シートを追加
Worksheets.Add
ActiveSheet.Name = "集計"
Set PivotS = ThisWorkbook.Worksheets("集計")

'『集計』シートにピボットテーブル作成
PCache.CreatePivotTable _
   TableDestination:=PivotS.Range("A1"), _
   TableName:="商品別売上表"

End Sub

Sub フィールド追加()

Dim PivotS As Worksheet 'ピボットテーブルがあるシート
Set PivotS = ThisWorkbook.Worksheets("集計")

'ピボットテーブルに行と列フィールドを追加
 PivotS.PivotTables("商品別売上表").AddFields ColumnFields:=Array("売上日"), _
 RowFields:=Array("品名コード")
'ピボットテーブルに値フィールドを追加
 PivotS.PivotTables("商品別売上表").AddDataField _
 Field:=PivotS.PivotTables("商品別売上表").PivotFields("金額"), _
 Caption:="合計 / 金額", _
 Function:=xlSum
 
'エラーヶ所↓↓
 With .PivotFields("金額")
 .Orientation = xlDataField
 .Caption = "合計 / 金額"
 .NumberFormat = "#,##0_ "
 End With


End Sub

【79157】Re:ピボットテーブル自動作成
発言  とおりすがり  - 17/5/26(金) 13:04 -

引用なし
パスワード
   偶然にも↓と同じようなことをされてますね。

2種類の集計方法
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=79149;id=excel

参考にされてください。

【79158】Re:ピボットテーブル自動作成
質問  yu__ka  - 17/5/26(金) 13:55 -

引用なし
パスワード
   ▼とおりすがり さん:
>偶然にも↓と同じようなことをされてますね。
>
>2種類の集計方法
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=79149;id=excel
>
>参考にされてください。

どの部分が参考になるのでしょうか?
恐れ入りますが、具体的に教えていただきたいのですが。
リンク先確認してみましたが、理解できておりません。
よろしくお願いいたします。

【79161】Re:ピボットテーブル自動作成
発言  マナ  - 17/5/26(金) 18:27 -

引用なし
パスワード
   ▼yu__ka さん:

>With .PivotFields("金額")

ピボットテーブルの指定がどこにもない?
というエラーででしょうか。

【79163】Re:ピボットテーブル自動作成
発言  マナ  - 17/5/27(土) 16:22 -

引用なし
パスワード
   ▼yu__ka さん:

修正してみました。

個人的には、ピボットテーブルを毎回作成しなくても
手作業で作成したものをひな形とし
マクロでは、
1.元データの修正
2.ピボットテーブルの更新
3.別名で保存
という運用がよいのではと思います。

Sub ピボットテーブル作成2()
  Dim DataS As Worksheet 'データシート
  Dim PivotS As Worksheet 'ピボットテーブルを作成するシート
  Dim PCache As PivotCache 'ピボットキャッシュ用変数
  Dim PivotT As PivotTable
  
  Set DataS = ThisWorkbook.Worksheets("ソート")
  
  '『ソート』シートからピボットキャッシュを作成
  Set PCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=DataS.Range("a1").CurrentRegion)
  
  '『集計』シートを追加
  Set PivotS = Worksheets.Add
  PivotS.Name = "集計"
  
  '『集計』シートにピボットテーブル作成
  Set PivotT = PCache.CreatePivotTable _
    (TableDestination:=PivotS.Range("A1"))
  
  
  'ピボットテーブルに行と列フィールドを追加
  PivotT.AddFields _
    ColumnFields:="売上日", _
    RowFields:="品名コード"
  
  'ピボットテーブルに値フィールドを追加
  PivotT.AddDataField( _
    Field:=PivotT.PivotFields("金額"), _
    Caption:="合計 / 金額", _
    Function:=xlSum) _
    .NumberFormat = "#,##0_ "
  
End Sub

【79164】Re:ピボットテーブル自動作成
お礼  yu_ka  - 17/5/27(土) 19:23 -

引用なし
パスワード
   ありがとうございます。
毎回ピボットテーブルを作成しなくてもよい、
なんて、考えが及びませんでした。
勉強になります。
ありがとうございました。

コード実際に使わせていただきました。

ありがとうございます。

▼マナ さん:
>▼yu__ka さん:
>
>修正してみました。
>
>個人的には、ピボットテーブルを毎回作成しなくても
>手作業で作成したものをひな形とし
>マクロでは、
>1.元データの修正
>2.ピボットテーブルの更新
>3.別名で保存
>という運用がよいのではと思います。
>
>Sub ピボットテーブル作成2()
>  Dim DataS As Worksheet 'データシート
>  Dim PivotS As Worksheet 'ピボットテーブルを作成するシート
>  Dim PCache As PivotCache 'ピボットキャッシュ用変数
>  Dim PivotT As PivotTable
>  
>  Set DataS = ThisWorkbook.Worksheets("ソート")
>  
>  '『ソート』シートからピボットキャッシュを作成
>  Set PCache = ActiveWorkbook.PivotCaches.Create( _
>    SourceType:=xlDatabase, _
>    SourceData:=DataS.Range("a1").CurrentRegion)
>  
>  '『集計』シートを追加
>  Set PivotS = Worksheets.Add
>  PivotS.Name = "集計"
>  
>  '『集計』シートにピボットテーブル作成
>  Set PivotT = PCache.CreatePivotTable _
>    (TableDestination:=PivotS.Range("A1"))
>  
>  
>  'ピボットテーブルに行と列フィールドを追加
>  PivotT.AddFields _
>    ColumnFields:="売上日", _
>    RowFields:="品名コード"
>  
>  'ピボットテーブルに値フィールドを追加
>  PivotT.AddDataField( _
>    Field:=PivotT.PivotFields("金額"), _
>    Caption:="合計 / 金額", _
>    Function:=xlSum) _
>    .NumberFormat = "#,##0_ "
>  
>End Sub

661 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free