[Excel] 用巨集作小計

用巨集作小計

程式binding時,  Excel是開啟的, binding完資料後才要啟動巨集,

故不能用Auto_Open(2007版是Workbook_Open),

所以在Workbook_SheetSelectionChange呼叫Module

Sub AutoOpen()
'只作一次, 所以x是記號, 已binding完才會focus在第一列
    If Range("M5").Value = "x" Or ActiveCell.Row <> 1 Then
     Exit Sub
    End If
   
    Dim totalCell As Range '小計列
    Set totalCell = Range("B8").End(xlDown)'找本表最後一筆,為已完成之小計列
    
    Dim i As Integer
    For i = 12 To totalCell.Row - 1'從本表第二列開始和上一列比較,M欄值不同就小計
        If Range("M" & i).Value <> Range("M" & i - 1).Value Then
            Rows(totalCell.Row).Select '選取小計列(先寫好sumif公式,範圍為第一列到上一列,M欄等於上列M欄值即加總)
            Selection.Copy
            Rows(i).Select'選取要插入的列
            Selection.Insert Shift:=xlDown'插入小計列
            i = i + 1'因為插入後本列會往下移, 所以跳過一列
        End If
    Next i
    
    Range("M5").Value = "x" '標記x表示已完成
    Application.CutCopyMode = False '取消copy中的區域
End Sub

 

 

Taiwan is a country. 臺灣是我的國家