2016-06-14 102 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