每天學一點Excel2010 (37)——迴圈引用和迭代計算

先來回答上期的問題

百錢買白雞:根據題目得出

公雞+母雞+小雞=100

公雞*5+母雞*3+小雞/3=100

未知數多於已知條件數,屬於不定方程,很可能有滿足給定條件的多個解。

韓信點兵

一個未知數同時滿足三個條件,也有多個解,不滿足迭代計算的條件。

上述問題靠人工的“方案管理器”和“單變數求解”無能為力,使用“模擬運算表”來解決。具體過程不講了,直接上兩張圖

每天學一點Excel2010 (37)——迴圈引用和迭代計算

百錢買百雞

每天學一點Excel2010 (37)——迴圈引用和迭代計算

韓信點兵(公式裡面沒有用到行值,列值填充到1000)

050 迴圈引用和迭代計算

如果公式引用自己所在的單元格,則無論是直接引用還是間接引用,都會構成迴圈引用。

有興趣的可以上網搜一下芝諾悖論(Zeno‘s paradox)。中國古人也曾說過,“

一尺之棰,日取其半,萬世不竭”。不管是否收斂(存在極限值)迴圈引用可以進行無限次的迭代。

1)新建一個工作簿,在Sheet1工作表的A1輸入“=A1+1”,回車後顯示0,這是直接迴圈引用,狀態列會顯示“迴圈引用:A1”。

2)在A2中輸入“1”,B2中輸入“=A2/2”,再回到A2,輸入“=B2/2”,結果還是顯示0,這是間接迴圈引用。

3)迴圈引用會導致比較奇怪的結果,Excel預設是關閉迭代計算的,現在我們依次點選“開始”、“選項”、“公式”,勾選“手動重算”單選框、“啟用迭代計算”複選框,將最多迭代次數改為2,後確定。

每天學一點Excel2010 (37)——迴圈引用和迭代計算

2次迭代計算的結果

4)每按一次F9,便進行兩次公式計算(如果開啟了自動重算,我們每做一次操作,上面的公式便自動重算2次)。

5)我們在C1輸入1,C2輸入“=C1/2”,點選C2右下角的填充柄向下填充公式,按F9看看“萬世不竭”的效果,和旁邊的A2、B2比較一下。一直按F9,最後變成0了,已經超出計算機所能執行的極限了,有興趣的把C2公式繼續往下填充,如圖最後也變成0,小的不能再小了。

每天學一點Excel2010 (37)——迴圈引用和迭代計算

超出運算範圍

6)這種迴圈引用和迭代計算在程式設計時經常用到,比如迴圈變數(i=i+1)。為了防止無限次的迭代計算,在Excel選項裡面可以透過設定“最多迭代次數”、“最大誤差”(兩次相鄰計算之間)來終止計算。

7)出現迴圈引用系統會出現警告,一般要刪除。確實要保留必須啟用迭代計算並設定條件,否則會無休止的進行計算。

8)最後介紹幾個和大量資料計算相關的Excel選項

計算。依次點選“開始”、“選項”、“公式”,在計算選項區域設定,有三個選項(“公式”選項卡的“計算區也有)。如果工作簿中包含大量公式、模擬運算表、函式、外部引用時,重新計算可能會持續較長時間,工作不方便,設為手動計算可以控制何時進行重新計算。

F9 手動計算所有開啟的工作簿中,自上次計算後進行了更改的公式。

Shift+F9 重新計算活動工作表中,自上次計算後進行了更改的公式。

Ctri+Alt+F9 重新計算所有開啟的工作簿中的所有公式。

Ctri+Shift+Alt+F9 重新檢查相關的公式,然後計算所有開啟的工作簿中的所有公式。

迭代。依次點選“開始”、“選項”、“公式”,勾選“啟用迭代計算”複選框後有兩個選項。在計算選項區域設定主要用於模擬分析中控制迭代的停止條件。

精度。依次點選“開始”、“選項”、“高階”,在“計算此工作簿”區域,勾選“將精度設為所顯示的精度”。預設情況下,Excel計算的是儲存值而非顯示值,在數字格式的時候講過顯示的值只是樣子改變,所以我們有時按照顯示值使用計算器進行人工計算時,會因為舍入誤差而略有差異,一定要注意(有時做工資會對不上賬)。

每天學一點Excel2010 (37)——迴圈引用和迭代計算

顯示的數值加法結果有誤

啟用多執行緒處理。依次點選“開始”、“選項”、“高階”,在“公式”區勾選“啟用多執行緒計算”複選框,將使用計算機上面的所有處理器,加快速度,縮短時間。

(待續)