- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
2#
發表於 2015-10-20 17:01
| 只看該作者
本帖最後由 准提部林 於 2015-10-20 17:06 編輯
- Sub Macro3()
- Dim j&, C&, Arr, Brr, X&, Y&, T$, xD
- With Range([A1], [A65536].End(xlUp)(1, 2))
- Arr = .Value
- '_範圍納入陣列
- C = Application.CountIf(.Columns(1), "[*]") + 1
- '_計算〔項目〕個數
- End With
-
- ReDim Brr(UBound(Arr), C)
- Set xD = CreateObject("Scripting.Dictionary")
-
- For j = 1 To UBound(Arr)
- T = Arr(j, 1): If T = "" Then GoTo 101
- '儲存格值以 T 變數代之
- If Left(T, 1) = "[" Then X = X + 1: Brr(0, X) = T: GoTo 101
- '_儲存格若為〔項目〕,向右累計欄位,並加入項目
- If xD(T) = 0 Then Y = Y + 1: xD(T) = Y: Brr(Y, 0) = T
- '_若為〔明細〕,向下累計列位,並加入明細
- Brr(xD(T), X) = Val(Arr(j, 2))
- '_帶入配對值
- 101: Next j
-
- [F7].Resize(Y + 1, X + 1) = Brr
- '_填入陣列內容
- [G8].Resize(Y, X).Replace "", "n/a"
- '_將〔空格〕取代為〔n/a〕
- End Sub
複製代碼
只能大約註解,請自行研究,恕不再說明∼∼ |
|