精通VBA分支結構,少寫程式100行
上一節分享後,有同學私信和我說:猴子,上次說的“For迴圈結構”讓程式自動化執行,確實提高了我的工作效率,但能不能夠讓程式更加智慧一些?
看到這位同學的私信又一個《肖申克救贖》的天台式微笑,悄悄上揚在我的嘴角。
今天我們就來學習《Excel VBA:辦公自動化》教程的第6節,介紹分支結構。
1.基礎版分支結構
案例:根據單元格的分類方法,判斷左側的各位富豪應該獲得什麼富豪尊稱?
我們首先依據「分類方法1」看上述富豪的尊稱
通過觀察可以發現,分類方法1中只包含2個層級,而各個層級的判斷標準依據身價的數值大小。
看到這裡,具有職業敏感度的我們肯定會將上述翻譯為下面的中文。
那麼,同學可能就問了:思路已經很清晰了,可是怎樣讓這個思路變為VBA程式碼執行呢?
沒錯,這就需要用到新知識點「IF分支結構語句」
從上圖我們可以看到,「IF分支結構語句」主要由3部分組成:
(1)分支1
其標準的書寫格式是「IF xxx then」,意思是:如果(if)符合判斷的條件xxx,那麼(then)
(2)分支內容
分支內容就是符合判斷條件後,需要執行的語句
(3)分支2
標準寫法是「Else」,意思是:不符合分支1,判斷是否符合分支2
(4)分支結束
其標準的書寫格式是「End IF」,意思是:IF語句結束,跳出結構,執行下一句。
那麼套用到上述的案例中,我們以判斷「第1行王興」為例:
接下來,我們拆解一下上述程式碼並還原思路:
(1)首行輸入「Option Explicit」
這句話表示告訴VBA:注意了,我要開始使用強制申明瞭(上一講的知識點,忘記可以回顧)。
(2)輸入「Sub 富豪判斷()」,系統會自動將尾部的「End Sub」寫出
這句話表示告訴VBA:我寫了一個名稱為「富豪判斷」的巨集。
(3)定義1個變數「Dim money」
這句話表示告訴VBA:我們定義了1個變數「money」
(4)賦值語句「money = Cells(3, 3)」
這句話表示告訴VBA:我把「單元格C3」的值賦給了「變數money」,也就是下面的“王興”。
(5)分支結構語句
這一部分表示告訴VBA:如果「變數money」也就是「單元格C3」的值,如果大於1000,那麼「單元格D3」的值將是「超級富豪」;否則,「單元格D3」的值就是「富豪」。
寫完上述程式碼後,我們執行後看結果
很明顯,上述的程式達到了我們的預期結果,但是聰明的同學可能又提出了想法:猴子,你這就才2個層級,比較容易實現,如果我有很多個層級,向俄羅斯套娃那樣,那又如何實現呢?
不用說,又一個天台式微笑上揚嘴角。那我們就有必要升級一下我們的分支結構了。
2.升級版分支結構
其實,對於上述同學提出的多個層級的分支結構,也僅需要加2行程式碼即可實現。
我們依據「分類方法2」看上述富豪的尊稱
這時候我們發現,程式碼思路還是原來的思路,就僅僅是層級變多了而已,那麼根據這道題,我們僅簡單修改下就好。
我們可以看到,我們在程式碼彙總增加了幾句「ElseIf xxx」,表示的意思是「否則如果」,即:如果上面的條件不符合,那麼接著往下判斷就行了。其主要的語法如下面
上圖僅展示了3級分支,如果大家實際工作彙總還有更多的判斷條件,那麼自己可以根據實際情況相應新增即可。
3.關係運算
在上述的程式碼過程中,大家可能沒有注意,我們用到了「身價在0-1000」之間這樣的描述。
這樣的描述一般表示為二者之間的大小關係,比如數學上我們熟悉的「大於 等於 小於」,在VBA中也存在各個變數、數值之間的比較,專業術語稱作「關係運算符」。
而我們在VBA中常用的「關係運算符」主要有以下4種:
大於(>),小於(<),等於(=),不等大於(<< span="">>)
4.總結
好了,我們總結一下今天的內容
(1)用好分支結構,程式更智慧
(2)關係運算符組合分支結構,威力巨大
經常使用的有:大於(>),小於(<),等於(=),不等大於(<< span="">>)
5.思考題
我們在案例中僅僅以「第1行王興」進行了判斷,那麼結合上次分享的內容,我們如何利用「For迴圈結構」和「If分支結構」實現一鍵自動判斷所有富豪的尊稱呢?
歡迎在留言區寫下你的答案。
推薦:人工智慧時代的必學技能