[[20150420152015]] 『VBで既存のワークシートにピボット作成』(未知の世界) ページの最後に飛ぶ

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

 

『VBで既存のワークシートにピボット作成』(未知の世界)

VBはというより、エクセルも初心者でいろいろ苦戦しています

毎月、あるブックから、必要な列をコピペして持ってきます。
持ってくる列は決まっていますが、行は、数千行ほど変動します。
列はA〜F列におさまります。

そのコピペして持ってきたブック(仮に引用ブックとします)を
使用します。

  A   B  C   D    E   F
1 部  課  値a  単価  別  別名

引用ブックの あるシートのA〜F列を元にピボットを作りたいと思ってます。

☆ピボットを作る場所は、既存のワークシート(○○表)のO1です。
☆レポートフィルタに「部・課・別・値a」
☆行ラベルに「単価」
☆値に「値aを合計に変更・単価はデータの個数」

という感じです。

その作ったピボットを参照元に、横にある表に式を入れているので、値の位置とかずれてしまうと
正しい結果が表示されないのでVBで作りたいと思ってます。
毎月ピボットを作ればいいのですが、いろんな方も使うので、ボタン1つでできたら
したいです。

毎月、変動するので、表を選択してピボットを作成するようにVBでコードを
書いていきたいと思っていますが、そんなことはできますでしょうか?

実は、表を選択するだけのVBならできたのですが、そこから先は分からず…。
なので、いろいろ調べて見よう見まねで下記のコードを真似して、
(意味の分からないこと多々ありますが、とりあえずしてみました)
自分のファイル用に作ってみたのですが、☆のようにうまいことピボットが作れません。

Sub test()

Dim ws As Worksheet

    Dim pvc As PivotCache
    Dim pvt As PivotTable
    Set ws = Sheets.Add
    Set pvc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
                                            SourceData:="○○表!R1C1:R2842C6")
    Set pvt = pvc.CreatePivotTable(TableDestination:=ws.Name & "!R3C1", _
                                            TableName:="ピボットテーブル1", _
                                            DefaultVersion:=xlPivotTableVersion10)
    With pvt
        With .PivotFields("部")
            .Orientation = xlPageField
            .Position = 1
        End With
        With .PivotFields("課")
            .Orientation = xlPageField
            .Position = 1
        End With
        With .PivotFields("単価")
            .Orientation = xlPageField
            .Position = 1
        End With
        With .PivotFields("値a")
            .Orientation = xlPageField
            .Position = 1
        End With

        With .PivotFields("単価")
            .Orientation = xlRowField
            .Position = 1
         End With

        .AddDataField .PivotFields("値a"), "合計 / 値a", xlSum
        .AddDataField .PivotFields("単価"), "データの個数 / 単価", xlCount

    End With

End Sub

いろいろ質問したいこともございますが、文章が長くなりますので、とりあえずここまでで
よろしくお願い致します。

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 アプローチを変えて、
 既存のピボットが参照しているデータを上書きすれば、
 数式の変更も必要ないのではないでしょうか?

 それから、
 >毎月、あるブックから、必要な列をコピペして持ってきます。 
                         ~~~~~~~↑~~~~~~~
                         ピボット使うなら、この工程不要ですよね?

(稲葉) 2015/04/21(火) 08:51


稲葉様

回答、ありがとうございます。

あるブックは、毎月分新しく○月分とフォルダを毎月作り、そこにあるデータソースから
とってきて(予想ですが…)格納されてます。

A〜GZ列まであり、数千行入っていて、その行の下に他の方が使用するいらないものが入っています。
なので、必要な列だけ持ってきて、いらないのを消して使用しています。
もしかしたら他に方法があったのかもしれませんが、私はこれ以外、分からなくて(>_<)
この方法で使用しています。

>アプローチを変えて、

 既存のピボットが参照しているデータを上書きすれば、
 数式の変更も必要ないのではないでしょうか?

それが、1番ですね。将来、私がいなくなり使う方が上司なので
私もエクセル詳しくないですが、それ以上に詳しくない方なので。
自動でいかないの?と言われて…。よくいろいろと式も壊したりするし、私も心配だったので。
それで一応挑戦をしてみました。

後は、もう少し時間はあるので少しだけがんばってみますが、
最終的にはその方法でお願いしてみます。

本当にありがとうございました。
(未知の世界) 2015/04/21(火) 09:44


コメント返信:

[ 一覧(最新更新順) ]


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