首頁 >深度 >

第3講:VBA實(shí)現(xiàn)選擇區(qū)域的自動計(jì)算 全球最資訊

【分享成果,隨喜正能量】這個(gè)世界,總有你不喜歡的人,也總有人不喜歡你。不管別人怎么對待你,都要珍視自己??桃馊ビ懭讼矚g,折損的,只能是自我的尊嚴(yán)。。

《VBA代碼解決方案》(10028096)這套教程是我最早推出的教程,目前已經(jīng)是第三版修訂了。這套教程定位于入門后的提高,在學(xué)習(xí)這套教程過程中,側(cè)重點(diǎn)是要理解及掌握我的“積木編程”思想。要靈活運(yùn)用教程中的實(shí)例像搭積木一樣把自己喜歡的代碼擺好。


(資料圖)

這套教程共三冊,一百四十七講,內(nèi)容覆蓋較廣,也是初級和中級間的過渡教程,改版后的內(nèi)容主要是提供程序源碼文件及代碼修正為32位和64位兼用代碼。今后一段時(shí)間會給大家陸續(xù)推出。今日的內(nèi)容是第3講:VBA實(shí)現(xiàn)選擇區(qū)域的自動計(jì)算

第三講 利用VBA,在EXCEL表格中實(shí)現(xiàn)選擇區(qū)域自動計(jì)算

今日和大家分享一個(gè)VBA的小實(shí)例,也是在工作中會用到的。什么例子呢?我們在使用EXCEL時(shí),如果選擇了幾個(gè)單元格會在下面直接讀出和是多少,這個(gè)功能十分的方便,那么這個(gè)功能能否做到隨心所欲呢?比如求和,比如計(jì)算選擇單元格的個(gè)數(shù),比如計(jì)算所選單元格的負(fù)值時(shí)多少,比如計(jì)算所選單元格的數(shù)值大于10的是多少,比如計(jì)算所選單元格是數(shù)值的為多少,當(dāng)然,在實(shí)際的工作中有很多的情況,比如要在報(bào)表中直接知道有多少出勤人數(shù),產(chǎn)量高過平均值的有多少人,我們無法一一的給出代碼,就以最常見的選擇區(qū)域求和來做一個(gè)示范吧。

1 利用For Each循環(huán)實(shí)現(xiàn)場景需求的代碼

該如何實(shí)現(xiàn)這個(gè)功能呢?今天我們就利用VBA采用FOR EACH循環(huán)來實(shí)現(xiàn)我們的需求。

下面的代碼實(shí)現(xiàn)了選擇區(qū)域自動求和和選擇單元格個(gè)數(shù)的自動計(jì)算功能:

Sub mynz_3() "第3講:在EXCEL表格中實(shí)現(xiàn)選擇區(qū)域的自動計(jì)算

Dim t As Long

Dim k As Long

Dim d

Sheets("3").Select

k = 0

For Each d In Selection

k = k + 1

If IsNumeric(d.Value) Then

t = t + d.Value

End If

Next

MsgBox "所選區(qū)域數(shù)值之和為:" & t & ",所選區(qū)域單元格共:" & k & "個(gè)"

End Sub

代碼截圖:

2 代碼解讀及實(shí)現(xiàn)的效果

我們先來看看對上述代碼的解釋:

1) Sheets("3").Select,說明這個(gè)功能是在”3”的工作表中來實(shí)現(xiàn)的。

2) Dim d 定義d這個(gè)變量時(shí)可變的,沒有給他具體的變量名稱,讀者可以自己查查我之前的文章,可以看到此時(shí)計(jì)算機(jī)分配給這個(gè)變量的具體內(nèi)存是多大

3) For Each d In Selection 用的是FOR EACH的循環(huán)語句,遍歷的元素是SELECTION中的各個(gè)元素,這個(gè)元素用d表示

4) k = k + 1 用K來表示SELECTION中的單元格的個(gè)數(shù),有一個(gè)就加上1

5) IsNumeric(d.Value) 是判斷單元格是否是數(shù)字。這時(shí)用到IS函數(shù),對于是否是數(shù)字的判斷,在VBA和EXCEL中是不同的函數(shù),要切記。

6) t = t + d.Value 如果是數(shù)字就累加求和

7) MsgBox "所選區(qū)域數(shù)值之和為:" & t & ",所選區(qū)域單元格共:" & k & "個(gè)" 遍歷完成所有元素后彈出對話框,給出結(jié)果,關(guān)于MSGBOX函數(shù)后面還有講解。

下面我們看看代碼的運(yùn)行結(jié)果:

我們選擇了上述的9個(gè)區(qū)域,數(shù)字為1,3,5,7,9,9,9,9 看下面程序的運(yùn)行結(jié)果:

完全正確。這就實(shí)現(xiàn)了我們的預(yù)期。

當(dāng)然,我上面的代碼只是實(shí)現(xiàn)了眾多的問題中的一個(gè),如果是求其他的問題只是將代碼略加改動即可,如,求選擇區(qū)域大于10的,只要改成:d.value>10,在做相應(yīng)的計(jì)數(shù)即可。這就是VBA的方便之處。

今日內(nèi)容回向:

1 為了實(shí)現(xiàn)選擇區(qū)域的自動計(jì)算,需要哪些函數(shù)?

2 為了實(shí)現(xiàn)選擇區(qū)域的自動計(jì)算,需要用到哪個(gè)循環(huán)語句?

3 如何實(shí)現(xiàn)選擇區(qū)域的自動求出不是數(shù)字的單元格個(gè)數(shù)?

本講內(nèi)容參考程序文件:VBA代碼解決方案(1-19).xlsm

我20多年的VBA實(shí)踐經(jīng)驗(yàn),全部濃縮在下面的各個(gè)教程中:

【分享成果,隨喜正能量】不要用無數(shù)次的折腰,去換得一個(gè)漠然的低眉。我們終其一生,不是為了滿足所有人,而是只需要找到和自己同頻共振的那一部分人。。

關(guān)鍵詞:

責(zé)任編輯:Rex_11