大家好,我們今日繼續講解VBA代碼解決方案的第49講內容(註:在整理之前的VBA系列文章中合併了一些文章,重新成集排序為第49講,所以從這篇文章開始以新的排序計算):VBA中SUM函數的利用方法。對多個單元格求和,是統計工作中非常普遍的工作,在之前的函數講解過程中,我下了很大的氣力來講解SUM函數及其衍生的函數,在數組的講解中也講了此函數在數組中的利用,可以說SUM函數在統計工作中起著舉足輕重的作用,如果把這個函數利用好了,對自己的工作是非常方便的,今日我在VBA中就此函數的利用及規律再次加以講解。
在對工作表的單元格區域進行求和計算時,使用工作表Sum函數比使用VBA代碼遍歷單元格進行累加求和效率要高得多,我們在熟悉了基本的代碼規則後,就要把重點放在優化程序上,這點非常重要,在一般的簡單運算中或許體會的不是很深,在資料庫的操作中這點非常的明顯。SUM函數就是優化程序的一個方法。
我們看下面的代碼。
Sub MyrngSum()
Dim rng As Range
Dim d As Double
Set rng = Range("A1:H10")
d = Application.WorksheetFunction.Sum(rng)
MsgBox rng.Address(0, 0) & "單元格的和為" & d
End Sub
Sub MyrngSum2()
Dim rng, rngs As Range
Dim d As Double
Set rngs = Range("A1:H10")
For Each rng In rngs
If rng > 0 Then d = d + rng
Next
MsgBox rngs.Address(0, 0) & "單元格的和為" & d
End Sub
代碼解析:
MyrngSum過程調用工作表Sum函數對工作表的單元格區域"A1:H10"進行求和計算。
在VBA中調用工作表函數需要在工作表函數前加上WorksheetFunction屬性。應用於Application對象的WorksheetFunction屬性返回WorksheetFunction對象,作為VBA中調用工作表函數的容器,在實際應用中可省略Application對象識別符。
在實際的應用中,我們不僅要對指定的單元格區域進行簡單的求和,還要利用上判斷的條件,這個時候,如果只是利用WorksheetFunction的sum函數就有些吃力了,我們為此仍舊回到原始的單元格判斷上來,如上面的MyrngSum2的過程。
下面我們實測一下上面的兩個過程:
代碼窗口:
首先運行的是MyrngSum過程:
再次運行的MyrngSum2過程:這次的運行中就去除了負數部分。
所以在具體的應用中不要機械,要實際問題實際分析。
今日內容回向:
1 sum 函數在VBA中是如何應用的?
2 完成條件求和的思路是怎麼樣的?
3 如果要是上述區域有數字呢?該如何進行判斷?