Excel中的迭代運算,可以解決很多問題,同時,迭代運算也給很多學習新手帶來困擾。
現在,本站給您詳細介紹什麼是Excel中的迭代運算,如何使用迭代運算。
一、迭代運算的概念
所謂的迭代運算,沒有什麼稀奇的,請大家不要相信所謂的磚家在某些“權威”書籍裡面所闡述的觀點。
說得簡單點,迭代運算就是遞迴計算,或者也可以簡單的稱為迴圈運算。
凡是學習過電腦程式設計的,沒有不知道遞迴運算的。
如果您沒學習過遞迴,那麼,本站再給您介紹個簡單例子。
例如解方程f(x)=0,牛頓切線法是這樣構造迭代格式的:X(n)=X(n-1)-f[X(n-1)]/f'[X(n-1)](n=1,2,3,……),在所考慮範圍內任意取一個值X(1),用上面迭代公式就可以求得X(2),X(3),……,從理論上講,當n→∞時,得到的就是方程的根,但實際上我們總不能將迭代次數進行到無窮大,需要在某一時刻停止迭代,通常有兩種方式來控制迭代次數:
1、選擇迭代次數n,當迭代次數達到n時,停止迭代;
2、選擇精度ε,當|X(n)-X(n-1)|<ε時,停止迭代。
EXCEL裡預設的迭代次數是n=100,精度ε=0.001,在工具→選項裡可以自己設定,使求得的結果近似程度更好些。
二、迭代運算的使用
比如,您在A1儲存格輸入一個值10,然後,選擇B2儲存格,執行菜單操作:“工具”→“選項”,彈出如下圖對話方塊。
勾√選“迭代計算”,然後輸入次數,比如本例的1,還可以設定最大誤差。
好了,以後,確認並退出對話方塊。
接著,再選擇B1儲存格,輸入公式:=A1+B1
大家可能會發問,為什麼B1儲存格的公式為:=A1+B1,儲存格自身調用儲存格本身的值,這有悖於常理,一般來說,會彈出公式錯誤的提示。由於我們在上面已經設定好了迭代運算,所以不會彈出提示。
您可能明白了吧,儲存格本身調用自身的資料進行運算後再把結果拿給儲存格本身。這就是迭代運算,也是迴圈運算。
下面的內容,將會給出迭代運算的自訂函數代碼。
三、迭代運算的常見問題
問題:整個表格中任何一個方格資料的更新都會引起B1的迭代更新,即導致B1的資料發生改變。
原因:Excel的函數和公式都是全域的,不論哪個方格資料的更新,當前表格中所有方格的資料都會重新計算並更新。
解決方案:把B1的無條件更新改為受限制的.選擇B1,輸入" =if(cell("address")="$a$1",a1+b1,b1)"。選擇B1並向下拖動,可將迭代計算擴充到同列其它行,if函數的參數2和參數3能自動更新,參數1中的"$a$1"因為是字串,所以不會自動更新,因此需要手動更改,比如第2行為=if(cell("address")="$a$1",a2+b2,b2),將$a$1改為$a$2即可,依此類推。
注意:
1.根據函數的限制條件,在A1方格輸入資料後,按Enter鍵或TAB鍵都可以更新B1,但使用滑鼠點其它方格,則B1不能迭代更新。
2.不要在某一個方格具有輸入焦點時點擊A1,因為這樣會使B1迭代更新。
四、迭代運算的自訂函數
以下的函數代碼就是迭代運算的函數代碼之一。
Function MyDD(i As Single) As Single
i = i / 5
If i < 5 Then
MyDD = i
Else
MyDD = MyDD(i)
End If
End Function
懂得程式設計的人都明白,上述的迭代運算函數代碼,其實就是遞迴代碼,換句話說,也是迴圈代碼。