我對VBA相當陌生,但是我有一個編程背景。我正在編寫VBA以打開兩個excel工作簿,複製數據透視表並將特殊值粘貼到分段工作簿中。從那裏,我需要比較數據透視並輸出差異。但是,我不確定該從哪裏出發。高效的數據透視/數據比較
示例數據
樞軸1
Sum of Fruits YearMon Category Group 201205 201206 201207 201208 201209 ... 201401 Apples Green 1.3 2.1 3.0 ... Red 1.0 1.5 2.0 ... Apples Total .. .. .. ... Berries Straw 1 1 1.1 2.0 2.1 ... Black 1 1 1.0 0.9 0.9 ... Berroes Total .. .. .. ...
樞軸2
Sum of Fruits YearMon Category Group 201206 201207 201208 201209 201210 ... 201402 Apples Green 1.5 2.3 3.2 ... Red 0.8 1.3 1.9 ... Yellow 1 0.9 0.9 1 ... Apples Total .. .. .. ... Berries Straw 1 1 1.3 1.8 2.1 ... Black 1 1 0.9 0.8 0.8 ... Berroes Total .. .. .. ...
所需的結果(樞軸2 - 樞軸1)
Sum of Fruits YearMon Category Group 201205 201206 201207 201208 201209 201210 ... 201402 Apples Green -0.6 -0.7 ... Red -0.7 -0.7 ... Apples Total .. .. .. ... Berries Straw 0 -0.1 -0.7 -0.3 ... Black 0 0 0 -0.1 ... Berries Total .. .. .. ...
我的第一個衝動是將YearMon
和Group
放入基於每個Category
的數組中,然後遍歷它們以移除兩個樞軸中不存在的屬性(即,在Pivot 1中不存在黃色蘋果,並且沒有201402
的數據)。然後,我將循環遍歷每個組並進行計算。這聽起來太亂了。
我目前正在考慮爲YearMon
和Group
創建一個範圍,然後在每個Category
的垂直和水平方向上遍歷範圍,以比較這些值。我不知道如何準確找到每個Category
停止的位置,或者我是否可以使用VLOOKUP
?還是有比較兩個樞紐比較簡單的方法嗎?
更新1
多數意見的建議,我嘗試使用源數據透視背後來完成這項任務。我能夠得到的數據,並按照上述方案,該方案是這樣的:
數據1
Category Group YearMon Value Apples Green 201207 1.3 Apples Green 201208 2.1 Apples Green 201209 3.0 Apples Red 201207 1.0 Apples Red 201208 1.5 Apples Red 201209 2.0 Berries Straw 201205 1.0 Berries Straw 201206 1.0 Berries Straw 201207 1.1 Berries Straw 201208 2.0 Berries Straw 201209 2.1 Berries Black 201205 1.0 Berries Black 201206 1.0 Berries Black 201207 1.0 Berries Black 201208 0.9 Berries Black 201209 0.9
數據2
Category Group YearMon Value Apples Green 201208 1.5 Apples Green 201209 2.3 Apples Green 201210 3.2 Apples Red 201208 0.8 Apples Red 201209 1.3 Apples Red 201210 1.9 Apples Yellow 201207 1.0 Apples Yellow 201208 0.9 Apples Yellow 201209 0.9 Apples Yellow 201210 1.0 Berries Straw 201206 1.0 Berries Straw 201207 1.0 Berries Straw 201208 1.3 Berries Straw 201209 1.8 Berries Straw 201210 2.1 Berries Black 201206 1.0 Berries Black 201207 1.0 Berries Black 201208 0.9 Berries Black 201209 0.8 Berries Black 201210 0.8
如下建議嘗試SUMIFS
後,似乎我需要爲每個數據集指定每個標準(Category,Group,YearMon)來進行比較。也許還有其他一些功能可以工作?
更新2
另一個建議是合併數據集,以從在一個樞軸計算差值。組合這兩個數據集後,我似乎無法找到一種方法來執行差異計算,而不包括標識每個數據集的另一列(1或2)。從那裏我可以做比較。我做錯了什麼嗎?
更新3
按照下面的答案,我簡單地否定了第二個數據集,以獲得差的值。
你可以得到數據透視表後面的數據集嗎?如果是這樣,你可以使用SUMIFS來獲得每個分組的總數,然後減去這兩個組。只是另一種方法...可能不適合你的情況。 –
我同意,獲取數據透視表背後的數據可以使它更容易。將兩個數據集組合成一個長數據集,並將一個集合中的數量乘以-1,然後基於此組合數據集執行新的數據透視表。然後,您的透視表會自動顯示兩者之間的差異,並且您仍然可以以任何想要的方式重新排列/切分和旋轉透視表。 –
Rob G的解決方案顯然是做到這一點的正確方法。學習如何做到這一點,你會變得更好excel –