Excel VBA質問箱 IV

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

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


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

【78485】ピボット作成 パニック 16/10/6(木) 17:11 質問[未読]
【78486】Re:ピボット作成 パニック 16/10/6(木) 19:25 質問[未読]
【78487】Re:ピボット作成 γ 16/10/6(木) 21:06 発言[未読]
【78488】Re:ピボット作成 パニック 16/10/7(金) 9:29 質問[未読]
【78489】Re:ピボット作成 γ 16/10/7(金) 20:36 発言[未読]
【78491】Re:ピボット作成 マナ 16/10/8(土) 13:52 発言[未読]
【78495】Re:ピボット作成 マナ 16/10/9(日) 23:24 発言[未読]
【78496】Re:ピボット作成 パニック 16/10/11(火) 11:23 お礼[未読]

【78485】ピボット作成
質問  パニック  - 16/10/6(木) 17:11 -

引用なし
パスワード
   AのBookからあるデータシートを新しいBookにコピーして
ピボットを作成したいです。

毎回、範囲が可変するので変数にいれたいのですがうまくいきません。
欲しい範囲は下記なのですが  
'Range("A3:E3").Select
'Range(Selection, Selection.End(xlDown)).Select

Sheets("1.尺度ごとの集計").Range("A3").CurrentRegionで範囲は大きくなりますが
表毎指定したほうが楽かと思い下記のように書きました。

Setでエラーになります。
または、SourceData:に直接書き込んでもそこでエラーになります。
書き方が間違っているのでしょうか?
ご教示お願いします。

Sub Pivot()
'
'
  Dim src As Range 'データ範囲
'
  Sheets("1.尺度ごとの集計").Select
  Sheets("1.尺度ごとの集計").Copy
  'Range("A3:E3").Select
  'Range(Selection, Selection.End(xlDown)).Select
  Sheets.Add
  
  Set src = Sheets("1.尺度ごとの集計").Range("A3").CurrentRegion
  
  ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=src _
    , version:=xlPivotTableVersion15).CreatePivotTable _
    TableDestination:="Sheet2!R3C1", TableName:="ピボットテーブル1", DefaultVersion _
    :=xlPivotTableVersion15
  Sheets("Sheet2").Select
  Cells(3, 1).Select
  ActiveSheet.PivotTables("ピボットテーブル1").AddDataField ActiveSheet.PivotTables( _
    "ピボットテーブル1").PivotFields("個人識別番号"), "合計 / 個人識別番号", xlSum
  With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("合計 / 個人識別番号")
    .Caption = "データの個数 / 個人識別番号"
    .Function = xlCount
  End With
  With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("事業署名")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("部署名")
    .Orientation = xlRowField
    .Position = 2
  End With
  With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("配属(配属先がある方のみ)")
    .Orientation = xlRowField
    .Position = 3
  End With
  ActiveSheet.PivotTables("ピボットテーブル1").TableStyle2 = "PivotStyleMedium5"
  ActiveSheet.PivotTables("ピボットテーブル1").RowAxisLayout xlTabularRow
  ActiveSheet.PivotTables("ピボットテーブル1").ColumnGrand = False
  ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("事業署名").Subtotals = Array( _
    False, False, False, False, False, False, False, False, False, False, False, False)
  ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("部署名").Subtotals = Array( _
    False, False, False, False, False, False, False, False, False, False, False, False)
End Sub

【78486】Re:ピボット作成
質問  パニック  - 16/10/6(木) 19:25 -

引用なし
パスワード
   色々と検索し下記に変更してもエラーになってしまいます。

Dim MyRow As Long

MyRow = Range("A65536").End(xlUp).row

・・・
SourceData:="1.尺度ごとの集計!R3C1:R" & MyRow & "C5"

どなたかお助けください!
お願いします。

【78487】Re:ピボット作成
発言  γ  - 16/10/6(木) 21:06 -

引用なし
パスワード
   >Setでエラーになります。
そこでエラーになる可能性は低いです。

どの行でエラーがでて、
なんというエラーメッセージなのかを正確に示して下さい。
あなたのPCの画面はこちらからは見えませんので。

【78488】Re:ピボット作成
質問  パニック  - 16/10/7(金) 9:29 -

引用なし
パスワード
   下記のようなエラーが出ます。
VBAではなく、普通にやるとピボットは組めます。
何がいけないんでしょうか?
VBAでもR1C1形式で指定するとうまくいきますが、都度、行数が変わるので
その形式は辞めたいです。

【エラーメッセージ】
そのピボットテーブルのフィールド名が正しくありません。
ピボットテーブルを作成するにはラベルのついた列でリストとして編成されたデータを使用する必要があります。

宜しくお願いします。

【78489】Re:ピボット作成
発言  γ  - 16/10/7(金) 20:36 -

引用なし
パスワード
   ▼パニック さん:
>下記のようなエラーが出ます。

>【エラーメッセージ】
>そのピボットテーブルのフィールド名が正しくありません。
>ピボットテーブルを作成するにはラベルのついた列でリストとして編成されたデータを使用する必要があります。

繰り返し確認しますが、
「どの行で」エラーになるのですか?
その行で使っているフィールド名が正しくないのです。

お尋ねしたことに、きちんと回答してください。

【78491】Re:ピボット作成
発言  マナ  - 16/10/8(土) 13:52 -

引用なし
パスワード
   ▼パニック さん:
>AのBookからあるデータシートを新しいBookにコピーして
>ピボットを作成したいです。

>色々と検索し下記に変更してもエラーになってしまいます。

>VBAではなく、普通にやるとピボットは組めます。


考え方をかえて、こんな感じではだめなのでしょうか。
これならマクロ使うまでもないかもしれません。

1)ひな形Book(データテーブルとピボット)を手動で作成しておき
2)AのBookのデータをひな形に転記
3)ピボットを更新
4)ひな形を別名で保存

【78495】Re:ピボット作成
発言  マナ  - 16/10/9(日) 23:24 -

引用なし
パスワード
   ▼パニック さん:

ピボットと関係なく、初歩的なことが理解できていないのではと気になっています。

>Setでエラーになります。

の意味は、

>  'Range("A3:E3").Select
>  'Range(Selection, Selection.End(xlDown)).Select

だとエラーにならないのに

>  Set src = Sheets("1.尺度ごとの集計").Range("A3").CurrentRegion
 
setを使うとエラーになるということですか。

だとすると、CurrentRegionの意味を理解していますか。
2行目にデータがあると使えませんが、問題ないですか。
馬鹿にしないでというような、とても失礼なコメントになってしまってごめんなさい。

先のコメント通り、毎回ピボットを作成する必要性がわからないし、
今は、もっと基礎的で汎用性のあるものから取り組まれてはどうかと考えますが、
エラー原因をしっておくことは、大切だとも思います。

【78496】Re:ピボット作成
お礼  パニック  - 16/10/11(火) 11:23 -

引用なし
パスワード
   みなさん

有難うございました。
MyRow = Sheets("1.尺度ごとの集計").Range("A10000").End(xlUp).row

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                   SourceData:="1.尺度ごとの集計!R3C1:R" & MyRow & "C7" _
                   , version:=xlPivotTableVersion15).CreatePivotTable _
                   TableDestination:="Sheet2!R3C1", TableName:="部署", DefaultVersion _
                   :=xlPivotTableVersion15

とすることで解決しました。
有難うございます。

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