历史版本21 :循环引用 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 应用场景

循环引用是指当一个单元格内的公式直接或间接地引用了这个公式本身所在的单元格。

例如,可以使用循环引用计算上日库存,每天的上日库存是:昨天的上日库存+( 入库-出库 ),如下图所示:

1617159815585339.png


1.2 实现思路

使用IF( )公式+层次坐标条件表达式实现循环引用。

2. 示例编辑

2.1 数据准备

新建普通报表,添加数据集 ds1 ,SQL 语句为

select 日期, 入库, 出库 from 库存  where strftime('%m',日期)= '06' order by 日期

2.2 报表设计

如下图设计表格,将 ds1 中的字段拖到 A2、B2、C2 单元格,D2单元格用于循环引用,统计每日的上日库存。

2021-06-24_20-13-59.png

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 效果预览

保存报表,分页预览后的效果如下图所示:

1617159815585339.png

支持 App 端和 HTML5 端预览,效果如下图所示:

1624866848224128.jpg

3.模板下载编辑

点击下载模板:循环引用.cpt