ブックが70枚あります。各シートが作成され、名前が付けられ、フィルタを使用して対応するデータをワークシートに挿入します。データ範囲は毎週変更される可能性があります。私は、すべての作業を行うためのVBAプログラムを作成しましたが、ユニークなフィルタリングされたデータを使用して各ワークシート内にピボットテーブルを作成しました。 私の質問は、forループ内の各ワークシート内にピボットテーブルを作成するにはどうすればいいですか?私は以下の私のコードの問題は、コードのソースデータのセクションであることを控除しました。各タブのデータ範囲は異なります(列は同じですが行数は異なります)。 ピボットテーブルの名前をループ内で繰り返す必要がありますか?forループ内でピボットテーブルを作成するvba
Sub Ptloop()
dim x as long
dim SorceRange as Range
dim k as long
'start of first generated work sheet
x=4
'number of worksheets
k=75
Set SourceRange = Range("A4", ActiveCell.End(xlDown).End(xlToRight))
For Each Worksheet In ActiveWorkbook.Sheets
If x <= k Then
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
Sheets(x).SourceRange, Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:=Sheets(x).Cells(4, 21), TableName:="PivotTable3", DefaultVersion _
:=xlPivotTableVersion14
x = x + 1
Else
Exit For
End If
Next Worksheet
End Sub
ダイナミックレンジを使用する必要があります。この記事「マクロを使った動的範囲の作成」(http://www.contextures.com/xlNames03.html#Pivot) – skkakkar
'For Loop'の中に' SourceRange'セットを持ち込み、それを 'ws'に修飾してください。したがって、Set SourceRange = Worksheet.Range( "A4"、Worksheet.Range( "A4")l.End(xlDown).End(xlToRight)) '。あなたがそれらを異なっていたい場合は、 'PivoTable&x'で各PTに名前を付けることができます。彼らはすべて別のシートにある場合は、しかし、それは必要ではありません。 –