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
懂得程序設計的人都明白,上述的迭代運算函數代碼,其實就是遞歸代碼,換句話說,也是循環代碼。