1 循環參考
內定情況下,試算表的公式,不可有循環參考。公式直接或間接參考到自己 (公式所在儲存格),稱為循環參考。此時會顯示錯誤訊息 #REF!,表示偵測出循環相依性。1.1 反覆運算
開啟反覆運算,次數上限1次 |
- 選擇試算表的功能表「檔案/試算表設定.../計算」。
- 反覆運算:開啟。
- 反覆運算次數上限:1次就好。
2 記憶與變動偵測
2.1 記憶
把自己的值,交給自己,就形成自我記憶的公式。例如:儲存格 A1 如果設定成公式 =A1,就是自我記憶:A1 =A1自我記憶公式,是循環參考,具有記憶功能,但不是很有用。除非,幫它加上條件。
2.2 條件式記憶
在特定條件下,才把自己的值交給自己,否則賦予新值,就形成條件式記憶公式。例如:A1 =IF( ... , A1, ... )或者
A1 =IF( ... , ... , A1 )條件式記憶公式,既能記憶,也能變動。
2.3 變動偵測
如果改成在 IF() 的條件中參考自己,就形成能夠偵測變動的 IF() 公式。例如:A1 =IF( A1= ... , ... , ... )變動偵測公式,也是循環參考。
3 變動時,才變動
用變動偵測,啟動變動函式。再用條件式記憶,凍結變動函式。3.1 自保持亂數
儲存格 B2 用來偵測 B1 的值是否有改變:B2 =IF(B2=B1, {B1;FALSE}, {B1;TRUE})
- 如果 B1 沒改變,B2 記憶 B1 的值,B3 設為 FALSE。
- 如果 B1 有改變,B2 記憶 B1 的值,B3 設為 TRUE。
儲存格 B4 根據 B3 控管變動函式:
B4 =IF(B3, RANDBETWEEN(1,100), B4)
- B3 = TRUE (B1 有改變),B4 產生新的亂數值 (啟動變動函式)。
- B3 = FALSE (B1 沒改變),B4 保持 B4 的值 (記憶,凍結變動函式)。
3.2 自保持時間
所有的變動函式 (Volatile Function),都可以用類似的方法,凍結它們。例如:取得目前時間的 NOW() 函式,變成只在 B1 有改變時,才會重新取得時間。4 小結
透過條件式循環參考,形成自我記憶,解決變動函式一直變個不停的問題。讓變動函式的效用大增,不再是令人又愛又恨的小淘氣。5 相關連結
1. Google Sheets: Array Lesson 1: 建立陣列 (Creating an array)2. Volatile Excel Functions