[[20040629175735]] 『VBA:ピボットテーブルを作る際のデータ範囲』(迷い子) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA:ピボットテーブルを作る際のデータ範囲』(迷い子)

[マクロを使ったピボットテーブルを作る際のデータ範囲について]

マクロでピボットテーブルを作りたいのですが,毎回データ数(行数)が変動する為、範囲の書き方が解りません。
例は5000行ですが、4000だったり6000だったり変動します。
列は22列で変動ありません。

 ---------- ---------- ---------- ---------- ----------

 Sub Jピボット一覧表()
' Jピボット一覧表 Macro
' マクロ記録日 : 2004/6/15  ユーザー名 : 迷い子

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "今期のみ!R1C1:R5000C22").CreatePivotTable TableDestination:="", TableName:= _
        "ピボットテーブル1"
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    ActiveSheet.Cells(3, 1).Select
    ActiveSheet.PivotTables("ピボットテーブル1").SmallGrid = False
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("ユーザー名").Subtotals = Array( _
        False, False, False, False, False, False, False, False, False, False, False, False)
    ActiveSheet.PivotTables("ピボットテーブル1").PivotFields( _
        "売上区分" & Chr(10) & "A=売上済" & Chr(10) & "B=受注残" & Chr(10) & "T=ターゲット" & Chr(10) & "C=不確定").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)
    ActiveSheet.PivotTables("ピボットテーブル1").AddFields RowFields:=Array("種別", "担当者" _
        , "ユーザー名", "主番枝番商談名", "売上区分" & Chr(10) & "A=売上済" & Chr(10) & "B=受注残" & Chr(10) & "T=ターゲット" & Chr(10) & "C=不確定", "データ"), ColumnFields:= _
        "売上月"
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("売上金額")
        .Orientation = xlDataField
        .Position = 1
        .NumberFormat = "#,##0_ "
    End With
    With ActiveSheet.PivotTables("ピボットテーブル1").PivotFields("売上GP")
        .Orientation = xlDataField
        .NumberFormat = "#,##0_ "
    End With
    Sheets("Sheet3").Select
    Sheets("Sheet3").Name = "ピボット一覧表"
    Range("A2").Select
    Columns("A:A").ColumnWidth = 4.5
    Columns("B:B").ColumnWidth = 5.38
    Columns("C:C").ColumnWidth = 17.38
    Columns("D:D").ColumnWidth = 21.88
    Columns("E:E").ColumnWidth = 3.63
    Range("A1").Select
End Sub

 ---------- ---------- ---------- ---------- ----------
バージョン:WINDOWS2000  エクセル2000

ずいぶん悩んでいます。何卒よろしくお願いします!!!


 全部を検証するのも(私は)手が足りない。
ピボットもあまり得意ではないので動かなかったらごめんなさいですが、
以下の部分がデータソースの範囲指定の引数なので、ここをなんとかすれば
出来そうな気配です。
 
SourceData:= "今期のみ!R1C1:R5000C22"
 
以下追加、変更案

 Sub Jピボット一覧表()
'
' Jピボット一覧表 Macro
' マクロ記録日 : 2004/6/15  ユーザー名 : 迷い子
'
 
'
 Dim MyRow As Long
 MyRow = Range("A65536").End(xlUp).Row
 ActiveWorkbook.PivotCaches _
               .Add(SourceType:=xlDatabase, _
                    SourceData:="今期のみ!R1C1:R" & MyRow & "C22"
                    ).CreatePivotTable TableDestination:="", _
                                       TableName:="ピボットテーブル1"
【以下略】
うまくいかない場合は・・・どなたかフォローお願いします(^_^;)
(KAMIYA)


 ・・・あと、ここら辺でも止まりそうなので、
    Sheets("Sheet3").Select
    Sheets("Sheet3").Name = "ピボット一覧表"
もしこの名前をつけたシートがピボットで新規作成したシートなら、
 
    ActiveSheet.Name = "ピボット一覧表"
に差換えたほうが良いかもしれません。


ありがとうございました。
正常に動きました!!!!!!

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.