【分享成果,隨喜正能量】這個世界,總有你不喜歡的人,也總有人不喜歡你。不管別人怎么對待你,都要珍視自己??桃馊ビ懭讼矚g,折損的,只能是自我的尊嚴。。
《VBA代碼解決方案》(10028096)這套教程是我最早推出的教程,目前已經(jīng)是第三版修訂了。這套教程定位于入門后的提高,在學習這套教程過程中,側(cè)重點是要理解及掌握我的“積木編程”思想。要靈活運用教程中的實例像搭積木一樣把自己喜歡的代碼擺好。
(資料圖)
這套教程共三冊,一百四十七講,內(nèi)容覆蓋較廣,也是初級和中級間的過渡教程,改版后的內(nèi)容主要是提供程序源碼文件及代碼修正為32位和64位兼用代碼。今后一段時間會給大家陸續(xù)推出。今日的內(nèi)容是第3講:VBA實現(xiàn)選擇區(qū)域的自動計算
第三講 利用VBA,在EXCEL表格中實現(xiàn)選擇區(qū)域自動計算
今日和大家分享一個VBA的小實例,也是在工作中會用到的。什么例子呢?我們在使用EXCEL時,如果選擇了幾個單元格會在下面直接讀出和是多少,這個功能十分的方便,那么這個功能能否做到隨心所欲呢?比如求和,比如計算選擇單元格的個數(shù),比如計算所選單元格的負值時多少,比如計算所選單元格的數(shù)值大于10的是多少,比如計算所選單元格是數(shù)值的為多少,當然,在實際的工作中有很多的情況,比如要在報表中直接知道有多少出勤人數(shù),產(chǎn)量高過平均值的有多少人,我們無法一一的給出代碼,就以最常見的選擇區(qū)域求和來做一個示范吧。
1 利用For Each循環(huán)實現(xiàn)場景需求的代碼
該如何實現(xiàn)這個功能呢?今天我們就利用VBA采用FOR EACH循環(huán)來實現(xiàn)我們的需求。
下面的代碼實現(xiàn)了選擇區(qū)域自動求和和選擇單元格個數(shù)的自動計算功能:
Sub mynz_3() "第3講:在EXCEL表格中實現(xiàn)選擇區(qū)域的自動計算
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 & "個"
End Sub
代碼截圖:
2 代碼解讀及實現(xiàn)的效果
我們先來看看對上述代碼的解釋:
1) Sheets("3").Select,說明這個功能是在”3”的工作表中來實現(xiàn)的。
2) Dim d 定義d這個變量時可變的,沒有給他具體的變量名稱,讀者可以自己查查我之前的文章,可以看到此時計算機分配給這個變量的具體內(nèi)存是多大
3) For Each d In Selection 用的是FOR EACH的循環(huán)語句,遍歷的元素是SELECTION中的各個元素,這個元素用d表示
4) k = k + 1 用K來表示SELECTION中的單元格的個數(shù),有一個就加上1
5) IsNumeric(d.Value) 是判斷單元格是否是數(shù)字。這時用到IS函數(shù),對于是否是數(shù)字的判斷,在VBA和EXCEL中是不同的函數(shù),要切記。
6) t = t + d.Value 如果是數(shù)字就累加求和
7) MsgBox "所選區(qū)域數(shù)值之和為:" & t & ",所選區(qū)域單元格共:" & k & "個" 遍歷完成所有元素后彈出對話框,給出結(jié)果,關于MSGBOX函數(shù)后面還有講解。
下面我們看看代碼的運行結(jié)果:
我們選擇了上述的9個區(qū)域,數(shù)字為1,3,5,7,9,9,9,9 看下面程序的運行結(jié)果:
完全正確。這就實現(xiàn)了我們的預期。
當然,我上面的代碼只是實現(xiàn)了眾多的問題中的一個,如果是求其他的問題只是將代碼略加改動即可,如,求選擇區(qū)域大于10的,只要改成:d.value>10,在做相應的計數(shù)即可。這就是VBA的方便之處。
今日內(nèi)容回向:
1 為了實現(xiàn)選擇區(qū)域的自動計算,需要哪些函數(shù)?
2 為了實現(xiàn)選擇區(qū)域的自動計算,需要用到哪個循環(huán)語句?
3 如何實現(xiàn)選擇區(qū)域的自動求出不是數(shù)字的單元格個數(shù)?
本講內(nèi)容參考程序文件:VBA代碼解決方案(1-19).xlsm
我20多年的VBA實踐經(jīng)驗,全部濃縮在下面的各個教程中:
【分享成果,隨喜正能量】不要用無數(shù)次的折腰,去換得一個漠然的低眉。我們終其一生,不是為了滿足所有人,而是只需要找到和自己同頻共振的那一部分人。。
關鍵詞:
責任編輯:Rex_11