05- 流程式控制制很重要,已知次數循環要用「For」

通過前面兩節課的學習,我們已經知道如何計算每一個特定商品的營業收入。

但是如果有更多的商品營收要計算呢?比如在上節的例子中,超市共有100個商品需要計算,如果不考慮效率的話,我們可以按照之前所學的方法,把每一個產品的收入都編寫一句程序,總共寫100句。

圖1 計算對應序號產品營收表

序號1的商品收入:Cells( 8, 7 ) = Cells(8, 5 ) * Cells( 8 , 3 )

序號2的商品收入:Cells( 9, 7 ) = Cells( 9, 5 ) * Cells( 9 , 3 )

…………

序號100的商品收入:Cells( 107, 7 ) = Cells( 107, 5 ) * Cells( 107 , 3 )

這種方法在商品有100個時勉強能夠實現但已經有點吃力,如果當產品規模擴大到500,或者上萬的時候,這種一行一行寫語句的方式就變得完全不可取,效率低下而且容易出錯。

這個時候,我們就要學會利用VBA的循環控制來避免重複運算的問題。

根據上節課的內容,我們已經知道,任意序號N的商品收為:

Cells(N+7, 7 ) = Cells( N+7, 5 ) * Cells( N+7 , 3 )

上節例子中商品序號為1到100,我們只需要利用一個循環,讓N從1開始,每次按步長為1一直增加到100即可。

而VBA中,有一個完美實現這個功能的循環函數——「FOR……NETX函數」


一、「FOR……NETX」函數

for……next語句的語法規則如下:

For i = 初始值 to 結束值 step 步長值

執行語句

Next

其執行過程如下:

  1. For步驟首先執行。對i進行計算,第一次循環為「初始值」,第二次循環為「初始值+步長」,第N次循環為「初始值+步長*N」
  2. 對i值進行判定,如果「i值在初始值和結束值範圍內」,則執行循環體中的執行語句。如果「i已經超出初始值和結束值之間的範圍」,循環終止,直接執行循環體也就是Next後面語句。
  3. 根據i值判斷結果執行語句。如果執行循環體,則執行循環體內的執行語句到NEXT,然後重複到步驟1進行i值計算。如果不執行循環體,則直接執行NEXT後面的語句。

圖2 FOR-NEXT語句執行流程

回到本節例子中,那程序就可以寫為:

在該程序中,商品序號i從1逐漸增加到100,每次增加步長1。對每一個商品序號,都對其計算商品的營業收入,知道第100號商品。這樣,就實現了一個循環體解決所有商品收入計算的問題,簡單並且高效。


二、for循環的使用注意事項

1、步長step設定可多樣,但計算機默認步長為1

實際使用過程中,FOR循環的流程式控制制步長可以為任意值,包括負數。這樣FOR循環的靈活性就大大增加了。比如下面的例子:

表示i從20逐步減少到10,每次減少步長為-2。

同時在使用過程中,如果在程序中沒有單獨寫明step步長值,系統就會默認步長為1。所以在本節例子中,商品序號從1變化到100,每次步長增加1,就可以直接寫為:

2、程序編寫有規範,Tab鍵縮進讓程序更易懂

隨著VBA學習的深入,程序的篇幅和編寫技巧也會迅速增加。這個時候必須要學會利用縮進將程序的邏輯體現出來,不僅方便自己編輯和閱讀,對於後期程序調試和修改也是有百利而無一害。

比如同樣是本節計算商品收入的例子,左圖利用tab鍵對程序進行縮進,可以迅速找到FOR……NEXT循環體的執行內容,也可以迅速找到整個商品營業收入Sub……End Sub的主體內容。相反,右圖就很難從中迅速找到FOR……NEXT循環體和其他邏輯。所以,對於初學者而言一定要從一開始就養成良好的編程規範,學會用tab鍵縮進調整代碼編寫樣式,這會讓我們在實際工作中非常受益。

圖3 程序編寫縮進規範對比


最後,打個廣告:

如果您希望走入開啟VBA學習之旅,可以看看我的新書:《EXCEL VBA實戰 入門到精通》 ~ yuedu.baidu.com/ebook/5 本篇內容即來源於第二章第二節。

如果想學習如果利用vba自動更新PPT,可以看看samrtwork的課程:Excel VBA 自動生成PPT報告 - 網易雲課堂

最後的最後,希望看到這個文檔的你每天都有好心情,每天越來越成為自己希望的自己~


推薦閱讀:

只要你打開瀏覽器就能用的三個免費工具,實用收藏!
有了這個時刻監督你的番茄鍾,你還敢分心嗎:Just Focus
做精細化運營不可或缺的11款效率工具
安利一些高效學習的APP
養成固定的App使用習慣,讓你更加專註

TAG:VBA | MicrosoftExcel | 效率類應用 |