- 帖子
- 262
- 主題
- 8
- 精華
- 0
- 積分
- 280
- 點名
- 0
- 作業系統
- xp
- 軟體版本
- Office 2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- HK
- 註冊時間
- 2015-8-11
- 最後登錄
- 2025-3-24

|
2#
發表於 2020-7-13 10:13
| 只看該作者
假設你的資料 "ID" 就在 [A1] 開始, 代碼如下:- Sub zz()
- Dim d As Object, dd As Object, k, t, n&, m&, HL$, b()
- Set d = CreateObject("scripting.dictionary")
- Set dd = CreateObject("scripting.dictionary")
- a = [a1].CurrentRegion
- For i = 2 To UBound(a)
- k = a(i, 1)
- d(k) = d(k) + 1
- dd(k) = dd(k) & "|" & i
- Next
- n = Application.Max(d.items)
- HL = a(1, 1) & "|" & a(1, 2)
- For j = 3 To UBound(a, 2)
- For jj = 1 To n
- HL = HL & "|" & a(1, j) & jj
- Next
- Next
- t = Split(HL, "|")
- ReDim b(1 To d.Count + 1, 1 To UBound(t) + 1)
- Workbooks.Add 1
- [a1].Resize(1, UBound(b, 2)) = t
- k = dd.keys: n = 0
- For i = 0 To UBound(k)
- t = Split(dd(k(i)), "|")
- n = n + 1
- b(n, 1) = a(t(1), 1)
- b(n, 2) = a(t(1), 2)
- m = 2
- For j = 3 To UBound(a, 2)
- For jj = 1 To UBound(t)
- m = m + 1
- b(n, m) = a(t(jj), j)
- Next
- Next
- Next
- [a2].Resize(n, UBound(b, 2)) = b
- End Sub
複製代碼 |
|