1. 概述
1.1 應用場景
循環引用是指當一個儲存格內的公式直接或間接地引用了這個公式本身所在的儲存格。
例如,可以使用循環引用計算上日庫存,每天的上日庫存是:昨天的上日庫存+( 入庫-出庫 ),如下圖所示:
1.2 實現思路
IF( )
2. 範例
2.1 資料準備
建立普通報表,新增資料集 ds1 ,SQL 語句為
select 日期, 入庫, 出庫 from 庫存 where strftime('%m',日期)= '06' order by 日期
2.2 報表設計
如下圖設計表格,將 ds1 中的欄位拖到 A2、B2、C2 儲存格,D2儲存格用於循環引用,統計每日的上日庫存。
D2儲存格輸入公式:IF(&A2=1,0,B2[A2:-1] - C2[A2:-1] + D2[A2:-1]),公式拆解後的說明如下表所示:
公式 | 說明 |
---|---|
IF(A, B, C ) | 條件運算式,如果A為真,傳回B,否則,傳回C |
&A2 = 1 | 條件運算式的一部分,判斷 A2 擴展後對應位置的值是否等於1 |
B2[A2:-1] - C2[A2:-1] + D2[A2:-1]) | 條件運算式的一部分,上日入庫【B2 所在的 A2(日期)儲存格往上偏移一個位置(上一日)所對應的 B2 儲存格的值】- 上日出庫【當前 C2 所在的 A2(日期)儲存格往上偏移一個位置(上一日)所對應的 C2 儲存格的值】+ 上日庫存【當前 D2 所在的 A2(日期)儲存格往上偏移一個位置(上一日)所對應的 D2 儲存格的值】 |
IF(&A2=1,0,B2[A2:-1] - C2[A2:-1] + D2[A2:-1]) | 若為第一天,上日庫存為 0,否則,下一天的上日庫存就等於上一天的上日入庫-上一天的上日出庫+上一天的上日庫存 |
2.3 效果預覽
儲存報表,分頁預覽後的效果如下圖所示:
支援 App 端和 HTML5 端預覽,效果如下圖所示:
3.範本下載
點選下載範本:循環引用.cpt