2016-06-14 3 views
1

私は非常に面倒なExcelファイルを数十のピボットテーブルで再編成することを任されています。再編成の一環として、ピボットテーブルを同じシート上と新しいシート上に動かすことで時間の経過とともに成長する余地が生まれます。ただし、getpivotdata()関数を使用したピボット・テーブル参照は、ピボット・テーブルの位置にハードコードされています。名前でピボットテーブルを参照するExcel 2010

私はピボットテーブルの名前を受け入れてその位置を返すカスタム関数を使用してgetpivotdata()関数内で参照なしでピボットテーブルを移動できるようにすることでこの問題を回避しようとしてきました。テーブルを壊す。私は場所の文字列バージョンと場所を指定する範囲オブジェクトを返そうとしましたが、両方の参照エラーを与える。私の最も成功した機能は、これまでのところ、ピボットテーブルオブジェクトを返した、そしてそれは私に参照エラーを与えるものではありませんが、それだけで私はここで、現在のコードです

を試してみてください何に関係なく、データとして0を返しません:

Public Function pivotNameToLoc(PTName As String) As PivotTable 
Dim WS As Worksheet, PT As PivotTable 

For Each WS In ActiveWorkbook.Worksheets 
    For Each PT In WS.PivotTables 
     If PT.Name = PTName Then 
      pivotNameToLoc = PivotTable 
      Exit Function 
     End If 
    Next PT 
Next WS 
End Function 
は、ここ

はあなたが範囲を返す必要が機能が

=GETPIVOTDATA("Data field",pivotNameToLoc("Name of table"),"other","fields") 

答えて

1

セルの数式で呼び出されている方法は次のとおりです。

Public Function pivotNameToLoc(PTName As String) As Range 
Dim WS As Worksheet, PT As PivotTable 

For Each WS In ActiveWorkbook.Worksheets 
    For Each PT In WS.PivotTables 
     If PT.Name = PTName Then 
      Set pivotNameToLoc = PT.TableRange1.Cells(1) 
      Exit Function 
     End If 
    Next PT 
Next WS 
End Function 
+0

ありがとう!範囲オブジェクトを使用する私の以前の試みは、間違ったTableRangeプロパティを使用していたと思います。 – Wright95

関連する問題