- 帖子
- 49
- 主題
- 8
- 精華
- 0
- 積分
- 63
- 點名
- 0
- 作業系統
- windows XP
- 軟體版本
- Office 2003
- 閱讀權限
- 20
- 性別
- 女
- 來自
- 高雄
- 註冊時間
- 2013-4-8
- 最後登錄
- 2013-10-30

|
請問各位高手,
我要將原始資料裡依類別與日期這兩個條件將金額加總到"總表",例如:1/1~1/31, A類金額加總後放到B4儲存格,2/1~2/28, A類金額加總後放到C4儲存格,3/1~3/31, A類金額加總後放到D4儲存格..以此類推
原本使用工作表函數SUMPRODUCT, 但資料量多時,工作表run重新計算會花很多時間, 想改用VBA方式.
但我只會用下列寫法,發現這樣寫法要寫很多的IF判斷,想請問各位高手 提供較好的寫法.感謝!
Private Sub CommandButton2_Click()
Dim rowcnt As Integer
Dim i As Integer
Dim sum_A_1, sum_A_2, sum_A_3,sum_A_4,sum_A_5,sum_A_6,sum_A_7,sum_A_8,sum_A_9,sum_A_10,sum_A_11,sum_A_12 As Variant
sum_A_1= 0 '統計A類1月份金額
sum_A_2= 0 '統計A類2月份金額
sum_A_3= 0 '統計A類3月份金額
sum_A_4= 0 '統計A類4月份金額
sum_A_5= 0 '統計A類5月份金額
Sheets("原始資料").Activate
With Sheets("原始資料")
rowcnt= .Cells(1, 1).CurrentRegion.Rows.Count
For i = 1 To rowcnt
'加總A類一月份金額
If .Cells(i,2) >= "2013/1/1"And .Cells(i, 2) <= "2013/1/31" And .Cells(i,1) = Sheets("總表").Range("A4") Then
sum_A_1= sum_A_1 + (Cells(i, 3).Value)
Sheets("總表").Range("B4") = sum_A_1
End If
'加總A類二月份金額
If .Cells(i,2) >= "2013/2/1"And .Cells(i, 2) <= "2013/2/28" And .Cells(i,1) = Sheets("總表").Range("A4") Then
sum_A_2= sum_A_2+ (Cells(i, 3).Value)
Sheets("總表").Range("C4") = sum_A_2
End If
Next
End With
End Sub
|
-
-
圖二.jpg
(59.32 KB)
|