在工作上看過很多人習慣用表格呈現資料,不過不是以樞紐表,而是用輸入的方式,這在分析運用上很沒彈性,剛好有一個表格要資料化,本來想用Power Query處理,後來還是決定寫VBA,避免Power Query會一直重複查詢,而且很多人喜歡把不同部門資料放在同一個工作表內,這時還是用VBA比較快。
在家裡弄了個簡單版,隔天上工可以快速修改用上。
Sub A0_反樞紐()
'2022/11/24 22:35
Dim arr_資料()
With ActiveSheet
br = 3
lr = .Cells(br, 1).End(xlDown).Row
lc = .Cells(br, 1).End(xlToRight).Column
n = 0
For i = br To lr
in_代碼 = .Cells(i, 1)
in_名稱 = .Cells(i, 2)
For c = 1 To 16 '12個月+4季
in_月份 = .Cells(1, c * 2 + 1)
in_噸數 = .Cells(i, c * 2 + 1)
in_金額 = .Cells(i, c * 2 + 2)
n = n + 1
ReDim Preserve arr_資料(1 To 5, 1 To n)
arr_資料(1, n) = in_代碼
arr_資料(2, n) = in_名稱
arr_資料(3, n) = in_月份
arr_資料(4, n) = in_噸數
arr_資料(5, n) = in_金額
Next
Next
.Range("A19").Resize(n, 5) = Application.Transpose(arr_資料)
End With
End Sub
- 很多人喜歡用的表格方式,這裡簡單的表達一下
類樞紐表格 |
- VBA執行完就能呈現如下面的資料
表格資料化 |
- 執行完作了個驗證,確認資料正確
比對資料 |