返回列表 上一主題 發帖

[發問] 請教:四個條件下的累計

回復 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
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 待人退一步,愛人寬一寸,就會活得很快樂。
返回列表 上一主題