在我們之前分享了關(guān)于工作表的數(shù)據(jù)計(jì)算的文章之后,有小伙伴過(guò)來(lái)給我增加難度了,他表示在自己的日常工作中也是經(jīng)常需要進(jìn)行數(shù)據(jù)的計(jì)算,但是并不到一定是求和計(jì)算,有時(shí)是平均值的結(jié)算,而且因?yàn)閿?shù)據(jù)分析的需要,很多時(shí)候需要行列數(shù)據(jù)同時(shí)進(jìn)行計(jì)算,雖然可以輸入公式來(lái)解決,但是每次輸入公式之后還需要向下填充,比較麻煩,一些不常用的函數(shù)自己也記不清楚,希望能夠通過(guò)VBA來(lái)實(shí)現(xiàn)這樣的效果,那么我們就來(lái)研究下這個(gè)功能
場(chǎng)景簡(jiǎn)介
其實(shí)行列同時(shí)計(jì)算的功能,我之前曾經(jīng)說(shuō)過(guò),在我們的平時(shí)的工作中還是比較常見(jiàn)的,因?yàn)槲覀兎治龅臄?shù)據(jù),有時(shí)是針對(duì)整體,有時(shí)有需要針對(duì)個(gè)體
所以行列同時(shí)計(jì)算,也是很實(shí)用的案例,我就來(lái)分析下這個(gè)場(chǎng)景,還是我們之前的案例。
我們需要針對(duì)所選數(shù)據(jù)區(qū)域進(jìn)行同一行數(shù)據(jù)的求和,同一列數(shù)據(jù)的求和,當(dāng)然為了數(shù)據(jù)處理的靈活性,我們?cè)黾佣嘁恍l件,比方說(shuō)最大值,最小值,平均值這樣的計(jì)算。
代碼區(qū)
來(lái)看看代碼執(zhí)行的效果
我們需要先選擇好計(jì)算的數(shù)值區(qū)域,既然是數(shù)據(jù)值區(qū)域,自然是不包含表頭內(nèi)容的,輸入框中也有明確的說(shuō)明
然后再來(lái)選擇需要計(jì)算的方式,我們代碼中提供了4種方法,如果后續(xù)實(shí)際工作中還需要增加或者刪減的話,可以自行修改
看看結(jié)果
我們來(lái)用公式驗(yàn)證下我們的結(jié)果,都是正確的
函數(shù)需要至少選擇兩次的區(qū)域,同時(shí)還需要拖動(dòng)單元格,寫(xiě)入函數(shù)公式,通過(guò)VBA 只需要選擇一次即可
代碼分析
乍一看,今天的代碼好像有兩個(gè)部分,是不是多寫(xiě)了一部分代碼呢?
這是模塊化的結(jié)構(gòu),雖然看來(lái)比較的長(zhǎng),但是每次調(diào)用方法的時(shí)候就更加的方便了。
Call cal(Nchoice, rng)
就是調(diào)用cal()這個(gè)方法的意思,大家后面寫(xiě)的代碼如果比較多,有些重復(fù)性的動(dòng)作就可以用這樣的方法,類似于其他編程語(yǔ)言中的類或者函數(shù)的效果
回到正題,選擇單元格這一塊就略過(guò)了,相信大家都非常的熟悉了,這里說(shuō)下choose這個(gè)方法
其實(shí)這個(gè)方法在之前我們分享函數(shù)篇章的時(shí)候有講述過(guò)這個(gè)函數(shù)的用法,他相當(dāng)于一個(gè)選擇器,第一個(gè)元素是數(shù)字,后面的幾個(gè)元素就是一個(gè)數(shù)組,可以無(wú)限長(zhǎng)
前面的數(shù)字是幾,就將后面第幾個(gè)元素抽調(diào)出來(lái),本案例中,我們需要計(jì)算的加法,加法就是1,那么
Nchoice = Choose(choice, 'SUM', 'MAX', 'MIN', 'AVERAGE')'第一個(gè)元素是'SUM',所以返回的結(jié)果就是'SUM'
然后就到了CALL這里了,call之后,程序就是從TEST()這個(gè)腳本中,直接跳準(zhǔn)到cal這個(gè)腳本中,同時(shí)還有兩個(gè)參數(shù),這兩個(gè)參數(shù)和cal中的兩個(gè)參數(shù)一定是一一對(duì)應(yīng)的,順序,位置都不能錯(cuò)!
然后我們就可以將上面代碼中的Nchoise,rng這兩個(gè)數(shù)據(jù)完整的帶入到新的腳本中,做單獨(dú)的操作
本案例中cal這段代碼主要是用來(lái)執(zhí)行計(jì)算的,如果后續(xù)要更改計(jì)算方法或者邏輯,只需要更改這一部分代碼,而不用動(dòng)上面這一部分TEST的代碼
這樣的寫(xiě)法對(duì)于后續(xù)代碼的更改有很大的幫助
為了區(qū)別數(shù)據(jù)源,我們這里將選擇區(qū)域標(biāo)記成為黃色
當(dāng)然你可以更改為你自己喜歡的顏色
然后就是計(jì)算公式了,這里的計(jì)算公式其實(shí)就是我們手工輸入公式的翻版,看看下圖就了解了。
列的方向方法是一致的
==================
聯(lián)系客服