用巨集作小計
程式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. 臺灣是我的國家