1

1 つのシートに複数のピボット テーブルを含めることができるか疑問があります。もしそうなら、シートで名前を定義する方法はありますか?

異なるシートで定義されたピボットテーブルを更新/更新するために以下のコードを書きましたが、次のエラーが発生します:

 Dim objExcel1,strPathExcel1
 Dim objSheet1,objSheet2,objSheet3

 Set objExcel1 = CreateObject("Excel.Application")
 strPathExcel1 = "D:\AravoVB\Copy of Original    Scripts\CopyofGEWingtoWing_latest_dump_21112012.xls"

objExcel1.Workbooks.open(strPathExcel1)
Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets("Business Process Matrix")
Set objSheet2 = objExcel1.ActiveWorkbook.Worksheets("Workflow Status Matrix")
Set objSheet3 = objExcel1.ActiveWorkbook.Worksheets("Business Hierarchy Martix")

objSheet1.PivotTables(1).PivotCache.Refresh
objSheet2.PivotTables(1).PivotCache.Refresh
objSheet3.PivotTables(1).PivotCache.Refresh

エラー : 下付き文字が範囲外です

ここで私を助けてもらえますか?

アップデート

以下の形式のデータ Excel シートがあります。

Name   Fruits    Condition of Fruits
=====  ======    ====================

Ram    Apple       Good

Jadu   Apple       Bad

Tina   Orange      Good

Ram    Orange      Good

Tina   Apple       Bad

Ram    Apple       Bad

同じExcelの他のシート、たとえばシート(2)のピボットプログラムの出力は次のようになります。

Name  Fruits   Condition of Fruits
====  ======   ===================
               Good       Bad    Total
               ====      =====  ======
Ram   Apple     1           1     2
Ram   Orange    1           0     1
Tina  Apple     0           1     1
Tina  Orange    1           0     1
jadu  Apple     0           1     1
===================================
Grand Total     3           3     6
===================================

上記の形式は、最初の表に示すように、シート (1) にソース データが含まれる場合は常に、シート (2) の Excel に存在する必要があります。

Excel ピボット テーブルの概念を使用してマクロ プログラムを作成する必要があります。

上記のピボット作成のために、コード設定を提案できますか?

ありがとう

4

1 に答える 1

3

1 つのシートに複数のピボット テーブルを含めることができます。それらを作成してから右クリックし、[ピボットテーブルオプション...]を選択して、名前を表示/変更します。Excel は自動的にテーブルに [PivotTable* N* ]という名前を付け、 Nは 1、2、3、... であるため、通常はこれを行う必要はありません。

ただし、外観を頻繁に変更する場合 (たとえば、列や行を追加または削除する場合)、1 つのシートに複数のピボットを配置することは避けてください。

編集:あなたのコメントに応えて...はい、できます... Excel2010.VBAでは、関連するオブジェクト/メソッドは

ActiveWorkbook.PivotCaches.Create(SourceType:=..., SourceData:= ..., Version:=...).CreatePivotTable TableDestination:=..., TableName:=..., DefaultVersion:=...

ソース データは PivotCache オブジェクトを介して定義され、宛先は連結された CreatePivotTable メソッドを介して定義されます。

後で使用します

ActiveSheet.PivotTables(...).PivotFields(...).Orientation and .position

ActiveSheet.PivotTables(...).AddDataField ...PivotFields(...), "header", xlSum

ピボット テーブルのデザインを指定します。

最適なのは、マクロの記録を開始し、ピボット テーブルを作成し、レコーダーを停止して、生成されたコードを調べることです。

于 2012-12-17T11:14:21.120 に答える