2016-02-26 57 views
0

我有一個數據透視表,其目的是根據用戶的選擇在兩個不同聚合級別彙總我的數據。如何使用VBA控制Excel數據透視表字段列表中元素的順序?

在原來的狀態,這裏有我的數據透視表費爾德列表: enter image description here

當用戶更改某些設置,下面的代碼從字段列表中隱藏指數A:

Sheets("test").PivotTables("test").PivotFields("IndexA").Orientation = xlHidden 

而且當改變相反時,下面的代碼使得IndexA再次可見:

Sheets("test").PivotTables("test").PivotFields("IndexA").Orientation = xlRowField 

由此產生的fi場列表現在看起來是這樣,同場列表的元素的修改排序: enter image description here

注意,在行字段列表,指數A現在是在頂部而不是底部,這破壞了一致性和我的報告的可讀性。

我的問題是..有沒有辦法通過VBA控制透視字段列表的排序?或另一種方法來達到我期待的相同結果? (打開和關閉現場列表中的某個項目並保留該訂單)

我很感謝任何人都可以提供有關此主題的幫助/建議。

+0

https://msdn.microsoft.com/en-us/library/office/dn254297.aspx adddatafield,addfield也許?看看對象模型,看看你是否可以發現它是否可能。您可能必須刪除所有字段,然後按您希望的順序將它們添加回來,而不是重新排序它們。 –

+0

我嘗試刪除所有字段並重新添加,但所有這些額外的操作使我的宏運行時間太長。我從Scott Holtzman實施了以下答案,並且工作正常。 –

回答

1

這是設置的位置代碼:

With Sheets("test").PivotTables("test").PivotFields("IndexA") 
    .Orientation = xlRowField 
    .Position = 1 
End With 

以供將來參考,我發現這個通過使用宏錄製和做手工,因爲我不記得的語法把我的頭頂部。只是指出它,因爲錄製手動操作可以進來方便查找語法:)

+1

謝謝Scott!這很好。 這是很好的提醒自己總是嘗試宏記錄器時有疑問.. –

相關問題