首頁 >深度 >

第3講:VBA實現選擇區(qū)域的自動計算 全球最資訊

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

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


(資料圖)

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

第三講 利用VBA,在EXCEL表格中實現選擇區(qū)域自動計算

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

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

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

下面的代碼實現了選擇區(qū)域自動求和和選擇單元格個數的自動計算功能:

Sub mynz_3() "第3講:在EXCEL表格中實現選擇區(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ū)域數值之和為:" & t & ",所選區(qū)域單元格共:" & k & "個"

End Sub

代碼截圖:

2 代碼解讀及實現的效果

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

1) Sheets("3").Select,說明這個功能是在”3”的工作表中來實現的。

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

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

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

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

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

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

下面我們看看代碼的運行結果:

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

完全正確。這就實現了我們的預期。

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

今日內容回向:

1 為了實現選擇區(qū)域的自動計算,需要哪些函數?

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

3 如何實現選擇區(qū)域的自動求出不是數字的單元格個數?

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

我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中:

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

關鍵詞:

責任編輯:Rex_11