- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
9#
發表於 2023-3-30 09:44
| 只看該作者
回復 8# storylai
謝謝論壇,謝謝前輩發表此主題與範例檔
後學藉此主題練習陣列與字典,運用key數量為指定新結果資料在陣列的列位置
以下是後學學習方案,請前輩參考
執行前:
執行結果:
Option Explicit
Sub TEST()
Dim Brr, T, Y, xR, i&, N&, j%
'↑宣告變數:(Brr,T,Y,xR)是通用型變數,(i,N)是長整數變數,j是短整數變數
Set Y = CreateObject("Scripting.Dictionary")
'↑令Y這通用型變數是 字典
Set xR = Range([F1], Cells(Rows.Count, 1).End(3)): Brr = xR
'↑令xR這通用型變數是 [F1]到A欄最後有內容儲存格,
'令Brr這通用型變數是 二維陣列,以xR變數值帶入陣列裡
For i = 2 To UBound(Brr)
'↑設順迴圈!i從2到 Brr陣列縱向最大索引列號
For j = 1 To 5: T = T & "|" & Brr(i, j): Next
'↑設順迴圈!j從1到 5:令T這通用型變數是 自身連接"|" 再連接
'i迴圈列j迴圈欄Brr陣列值之後的新字串
If Y(T) = "" Then
'↑如果以T變數查Y字典的item值是 空字元??
Y(T) = Y.Count + 1: N = Y(T)
'↑令以T變數為key,item是 Y字典key數量+1的數值,
'令N這長整數變數是 T變數查Y字典的item值
For j = 1 To 6: Brr(N, j) = Brr(i, j): Next
'↑設順迴圈!j從1到 6:令N變數列第j變數欄Brr陣列值是
'i變數列第j變數欄Brr陣列值
Else
N = Y(T): Brr(N, 6) = Brr(N, 6) + Brr(i, 6)
'↑令N這長整數變數是 T變數查Y字典的item值,
'N變數列第6欄Brr陣列值是自身 + i變數列第6欄Brr陣列值
End If
T = ""
'↑令T變數是空字元
Next
With xR.Offset(0, 8).Resize(Y.Count + 1, 6)
'↑以下是關於xR變數向右偏移8欄後從第1格擴展,
'擴展向下Y字典key數量+1列,向右擴展6欄,關於此範圍儲存格程序
.EntireColumn.ClearContents
'↑令這些儲存格所在的欄位儲存格值清空
.Value = Brr
'↑令這些儲存格值以Brr陣列值帶入
End With
Set Y = Nothing: Set xR = Nothing: Erase Brr
'↑釋放變數
End Sub |
|