大家好,我們今日繼續(xù)講解VBA代碼解決方案的第49講內(nèi)容(注:在整理之前的VBA系列文章中合并了一些文章,重新成集排序為第49講,所以從這篇文章開始以新的排序計算):VBA中SUM函數(shù)的利用方法。對多個單元格求和,是統(tǒng)計工作中非常普遍的工作,在之前的函數(shù)講解過程中,我下了很大的氣力來講解SUM函數(shù)及其衍生的函數(shù),在數(shù)組的講解中也講了此函數(shù)在數(shù)組中的利用,可以說SUM函數(shù)在統(tǒng)計工作中起著舉足輕重的作用,如果把這個函數(shù)利用好了,對自己的工作是非常方便的,今日我在VBA中就此函數(shù)的利用及規(guī)律再次加以講解。 在對工作表的單元格區(qū)域進(jìn)行求和計算時,使用工作表Sum函數(shù)比使用VBA代碼遍歷單元格進(jìn)行累加求和效率要高得多,我們在熟悉了基本的代碼規(guī)則后,就要把重點放在優(yōu)化程序上,這點非常重要,在一般的簡單運算中或許體會的不是很深,在數(shù)據(jù)庫的操作中這點非常的明顯。SUM函數(shù)就是優(yōu)化程序的一個方法。 我們看下面的代碼。 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過程調(diào)用工作表Sum函數(shù)對工作表的單元格區(qū)域'A1:H10'進(jìn)行求和計算。 在VBA中調(diào)用工作表函數(shù)需要在工作表函數(shù)前加上WorksheetFunction屬性。應(yīng)用于Application對象的WorksheetFunction屬性返回WorksheetFunction對象,作為VBA中調(diào)用工作表函數(shù)的容器,在實際應(yīng)用中可省略Application對象識別符。 在實際的應(yīng)用中,我們不僅要對指定的單元格區(qū)域進(jìn)行簡單的求和,還要利用上判斷的條件,這個時候,如果只是利用WorksheetFunction的sum函數(shù)就有些吃力了,我們?yōu)榇巳耘f回到原始的單元格判斷上來,如上面的MyrngSum2的過程。 下面我們實測一下上面的兩個過程: 代碼窗口: 首先運行的是MyrngSum過程: 再次運行的MyrngSum2過程:這次的運行中就去除了負(fù)數(shù)部分。 所以在具體的應(yīng)用中不要機(jī)械,要實際問題實際分析。 今日內(nèi)容回向: 1 sum 函數(shù)在VBA中是如何應(yīng)用的? 2 完成條件求和的思路是怎么樣的? 3 如果要是上述區(qū)域有數(shù)字呢?該如何進(jìn)行判斷? |
|