1. 概述
注:11.0.4 及之后版本推荐使用层次坐标函数 ACCSUM 函数 实现累计。
1.1 应用场景
1)逐层累计
逐层累计,即在分组表的每一组中分别将第一层至当前层的数据累加求和。
例如,在 2010、2011 年的分组数据中对不同订购月份的应付金额进行逐层累计,如下图所示:
2)跨层累计
跨层累计,即在分组表中不按分组进行累加求和,而是按照从上到下的顺序一直累加求和。
例如,在 2010、2011 年的分组数据中对不同订购月份的应付金额进行跨层累计,如下图所示:

1.2 实现思路
1)逐层累计
当前订购月份的应付金额与当前订购月份的前一个订购月份的累计应付金额相加,得到当前订购月份的累计应付金额。
2)跨层累计
第一个订购月份的计算公式与其他订购月份的计算公式不同:
如果不是第一个月,将当前订购月份的应付金额与当前订购月份的前一个订购月份对应的累计应付金额进行相加,即可得到当前订购月份的累计应付金额;
如果是第一个月,则需要将当前订购月份的应付金额与去年最后一个订购月份对应的累计应付金额进行相加,才可得到当前订购月份的累计应付金额。
2. 准备模板
2.1 新建模板
新建一个普通报表,如下图所示;
2.2 准备数据
新建数据库查询 ds1 ,输入 SQL语句:
SELECT STRFTIME('%Y',订购日期) AS 年份,STRFTIME('%m',订购日期) AS 月份,应付金额
FROM 订单
WHERE STRFTIME('%Y',订购日期) IN ('2010','2011')
表示从订单表中筛选 2010 年或 2011 年的年份(从 订购日期 字段中提取年份部分,命名为 年份 )、月份(从 订购日期 字段中提取月份部分,命名为 月份 )、应付金额
如下图所示:
2.3 设计报表
1)A1~C1单元格输入文本,A2~C2 单元格拖入相应的数据列,如下图所示:
2)C2 单元格的格式设置为「货币>¤#0.00」,数据设置选择「汇总>求和」,如下图所示:
3. 示例一:逐层累计
3.1 插入层次坐标
1)D1 单元格输入文本,D2 单元格插入层次坐标公式:C2 + D2[B2:-1],如下图所示:
2)公式说明如下表所示:
公式 | 说明 |
---|---|
D2[B2:-1] | 返回当前订购月份的前一个订购月份的累计应付金额 |
C2 + D2[B2:-1] | 当前订购月份的应付金额与当前月份的前一个订购月份的累计应付金额相加,即返回当前订购月份的累计应付金额 |
3)D2 单元格的格式设置为「货币>¤#0.00」,如下图所示:
3.2 效果预览
1)PC 端
保存模板,点击「分页预览」,效果如下图所示:
2)移动端
支持 App 端和 HTML5 端预览,效果如下图所示:
4. 跨层累计
4.1 插入层次坐标
1)D1 单元格输入文本,D2 单元格插入层次坐标公式:IF(&B2 > 1, C2 + D2[B2:-1], C2 + D2[A2:-1,B2:!-1]),如下图所示:
2)公式说明如下表所示:
公式 | 说明 |
---|---|
&B2 | 当前订购月份的位置 |
D2[B2:-1] | 返回当前订购月份的前一个订购月份对应的累计应付金额 |
C2 + D2[B2:-1] | 当前订购月份的应付金额与当前订购月份的前一个订购月份对应的累计应付金额相加,即返回当前订购月份对应的累计应付金额 |
D2[A2:-1, B2:!-1] | 返回去年最后一个订购月份对应的累计应付金额 |
C2 + D2[A2:-1,B2:!-1] | 当前订购月份的应付金额与去年最后一个订购月份对应的累计应付金额相加,返回当前订购月份对应的累计应付金额 |
IF(&B2 > 1, C2 + D2[B2:-1], C2 + D2[A2:-1,B2:!-1]) | 如果 &B2 > 1 ,执行 C2 + D2[B2:-1] ,否则执行 C2 + D2[A2:-1,B2:!-1] |
3)D2 单元格的格式设置为「货币>¤#0.00」,如下图所示:
4.2 效果预览
1)PC 端
保存模板,点击「分页预览」,效果如下图所示:
2)移动端
支持 App 端和 HTML5 端预览,效果如下图所示: