小智常见报表示例–层次坐标–循环引用报表
概述
循环引用:指当一个单元格内的公式直接或间接地引用了这个公式本身所在的单元格。
应用场景
如下图所示,计算上日库存,每天的上日库存是:昨天的上日库存+( 入库-出库 )。
实现思路
通过下列公式实现循环引用计算
=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}]
报表设计
将数据字段依次对应拖拽到对应单元格中,并将A2、B2单元格的表格设置为分组,C2单元格设置为汇总,并按照图中颜色方框框选分组。如下图所示:
循环引用的公式说明:
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 单元格的值】。
效果预览
循环引用演示.json
https://www.yuque.com/attachments/yuque/0/2023/json/25420404/1686882747761-afc56230-0abf-440c-b230-1da0d3cf8392.json
参考文档
- 小智报表样例源码下载
- https://gitee.com/tizdata_admin/vue-xzreport-example.git
- 小智报表demo体验
- https://xzdemo.tizdata.com/#/imbedShow/reportExample
- 丰富的报表模板示例
- 小智报表在线试用
- https://xzreport.com
- 小智报表js sdk下载
- https://tizdata.com/xzdownload/
- 开发使用文档
- https://doc.tizdata.com/xiaozhi/650