需求
- H欄不能為0
- 設定E、H、I欄的範圍
- 計算符合篩選的資料有幾筆
- 將篩選後的J欄加總
Code
- count的結果在A欄最下面(比方第一列是名稱,資料有500筆,count的結果會在A502)
- sum在J欄最下面
Sub Macro1() ' ' Macro1 Macro ' written by chlo, 2006/10/17 ' ' count rows Range("A1").Select Selection.CurrentRegion.Select row_count = Selection.Rows.Count - 1 ' count result by subtotal() Range("A" & (row_count + 2)).Select ' R3C[-3] means row = 3, column = current selected column - 3 ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R2C[0]:R[-1]C[0])" ' sum result by subtotal() Range("J" & (row_count + 2)).Select ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R2C[0]:R[-1]C[0])" ' filter Range("A1").Select Selection.AutoFilter Field:=8, Criteria1:="<>0" Selection.AutoFilter Field:=5, Criteria1:=">=0.1", Criteria2:="<=1000" Selection.AutoFilter Field:=8, Criteria1:=">=100", Criteria2:="<800" Selection.AutoFilter Field:=9, Criteria1:=">=300", Criteria2:="<1000" End Sub
用法
- 工具->巨集->Visual Basic編輯器
- 用右鍵點選Visual Basic編輯器左側的檔名->插入->模組
- 把上面的code貼進去,存檔(不存也可以用啦)
之後執行這個巨集就OK了,或在Visual Basic編輯器裡按F5,
若要對其它excel檔執行,Visual Basic編輯器不要關,打開其它檔案後再切回編輯器按F5
參考文件
- How to Check Number of Records Returned in an AutoFilter:參考count all row和基本操作,別用它篩選後count row的code,很慢
- 如何開啟巨集:工具->巨集->安全性->低
- subtotal()
- Anthony’s Excel VBA Page - Excel Tutorial:待看
沒有留言:
張貼留言