循环引用报表
概述
循环引用:指当一个单元格内的公式直接或间接地引用了这个公式本身所在的单元格。
应用场景
如下图所示,计算上日库存,每天的上日库存是:昨天的上日库存+( 入库-出库 )。

Preview
实现思路
通过下列公式实现循环引用计算
=IF(&A2=1,0,B2[A2:-1] - C2[A2:-1] + D2[A2:-1])
示例说明
数据准备
在数据面板中添加数据集,可选择Json数据集和Http接口数据集,Json数据如下图所示:
[{"日期":"2023-05-03","入库":156,"出库":123},{"日期":"2023-05-04","入库":145,"出库":127},{"日期":"2023-05-05","入库":183,"出库":164},{"日期":"2023-05-06","入库":168,"出库":137},{"日期":"2023-05-07","入库":182,"出库":158},{"日期":"2023-05-08","入库":168,"出库":138},{"日期":"2023-05-09","入库":175,"出库":137},{"日期":"2023-05-10","入库":180,"出库":137},{"日期":"2023-05-11","入库":148,"出库":126},{"日期":"2023-05-12","入库":168,"出库":134},{"日期":"2023-05-13","入库":168,"出库":137}]

Preview
报表设计
将数据字段依次对应拖拽到对应单元格中,并将A2、B2单元格的表格设置为分组,C2单元格设置为汇总,并按照图中颜色方框框选分组。如下图所示 :

Preview
循环引用的公式说明:
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 单元格的值】。
效果预览

Preview