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