返回列表 上一主題 發帖

[發問] 如何取合計資料

本帖最後由 Andy2483 於 2023-11-20 10:53 編輯

回復 3# 准提部林


    謝謝論壇,謝謝前輩指導
後學藉此帖學習前輩的方案,學習心得註解如下,請前輩再指導

資料表:


執行結果:



Option Explicit
Sub TEST_A1()
Dim Arr, Brr, i&, j%, N&, S1, S2
'↑宣告變數&是長整數,%是短整數,沒有符號的是通用型變數
Arr = Range(Sheets(1).[A1], Sheets(1).Cells(Rows.Count, "L").End(3))
'↑令Arr這通用型變數是 表1的[A1]到 L欄最後有內容儲存格範圍值的二維陣列
ReDim Brr(1 To UBound(Arr), 1 To 8)
'↑宣告Brr這通用型變數是二維空陣列,縱向索引號從1到 Arr縱向最大索引列號,
'橫向1~8索引號

For i = 5 To UBound(Arr)
'↑設順迴圈!i從1到 Arr縱向最大索引列號
    If Arr(i, 1) <> "" Then
    '↑如果i迴圈列1欄陣列值不是空字元?
       N = N + 1
       '↑令N這長整數變數累加1
       For j = 1 To 5
       '↑設順迴圈!j從1~5
           Brr(N, j) = Arr(i, Mid(12567, j, 1))
           '↑令Arr陣列i迴圈列1,2,5,6,7欄陣列值,帶入Brr陣列的
           'N變數列的1,2,3,4,5欄

       Next j
    End If
    If Arr(i, 7) = "合計:" And N > 0 Then
    '↑如果i迴圈列第7欄Arr陣列值是 "合計:",而且N變數大於0??
       Brr(N, 7) = Arr(i, 11): Brr(N, 8) = Arr(i, 12)
       '↑令N變數列第7欄Brr陣列值是 i迴圈列第11欄Arr陣列值
       '↑令N變數列第8欄Brr陣列值是 i迴圈列第12欄Arr陣列值

       S1 = S1 + Arr(i, 11): S2 = S2 + Arr(i, 12)
       '↑令S1變數是自身值累加 i迴圈列第11欄Arr陣列值
       '↑令S2變數是自身值累加 i迴圈列第12欄Arr陣列值

    End If
Next i
N = N + 1: Brr(N, 2) = "總計": Brr(N, 7) = S1: Brr(N, 8) = S2
'↑令N變數累加1,令N變數列第2欄Brr陣列值是 "總計"字串
'令N變數列第7欄Brr陣列值是S1變數,令N變數列第8欄Brr陣列值是S2變數

Sheets(3).[a:h].ClearContents
'↑令表3的[A:H]儲存格清除內容
If N > 0 Then Sheets(3).[A1].Resize(N, 8) = Brr
'↑如果N變數大於0?
'True就令表3的[A1]擴展向下N變數列,向右8欄範圍儲存格值,以Brr陣列帶入
End Sub
'=======================================================
以下是練習方案,請前輩再指教

Option Explicit
Sub TEST()
Dim Brr, Q, B1%, B2%, i&, j%, R&
Brr = Range(工作表1.[A1], 工作表1.Cells(Rows.Count, 12).End(xlUp))
Q = [{1,2,5,6,7}]
For i = 5 To UBound(Brr)
   B1 = Brr(i, 2) <> "": B2 = Brr(i, 7) = "合計:"
   If B1 Then
      R = R + 1: Brr(R, 6) = ""
      For j = 1 To 5: Brr(R, j) = Brr(i, Q(j)): Next
   End If
   If B2 Then Brr(R, 7) = Brr(i, 11): Brr(R, 8) = Brr(i, 12)
i01: Next
If R = 0 Then Exit Sub
With 工作表4.[A1].Resize(R, 8)
   .EntireColumn.ClearContents
   .Value = Brr
   .Item(.Count + 2) = "合計"
   .Item(.Count + 7).Resize(, 2) = "=SUM(G1:G" & R & ")"
End With
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題