同比

教学视频

目标

要实现的效果如下:

image-20211109104552146

同比的公式为:本期/同期 x 100%

同比增长率公式为:(本期 - 同期)/ 同期 x100%

实现

创建一个关联trade表的数据集,如下图:

image-20211109103442359

设计一个两行五列的数据报表,并在D2、和E2单元格中添加同比和同比增长率表达式,如下图:

image-20211109104629995

1.D2单元格表达式为:&A2 > 1 ? C2/C2[A2:-1]{$B2==B2} : 0

这是一个三元表达式,首先根据当前单元格位置判断展开后的A2单元格的序号是不是大于1,如果是,那么就执行同比计算表达式:C2/C2[A2:-1]{$B2==B2},否则返回0。

我们用表达来解释一个这个同比计算表达式:C2/C2[A2:-1]{$B2==B2}

表达式 含义
C2 根据当前单元格位置取到对应的C2单元格的值
C2[A2:-1] 相对于当前位置单元格取到的A2单元格上一格对应的所有C2单元格
{$B2==B2} 在返回的所有的C2单元格中,查找符合条件$B2==B2的C2单元格返回,这里的$B2指的是返回的C2单元格对应的B2单元格,B2则指的是当前表达式所在单元格相对应的B2单元格的值
1.E2单元格表达式为:&A2>1 ? (C2 - C2[A2:-1]{B2==$B2})/C2[A2:-1]{B2==$B2} : 0

这同样是个三元表达式,首先根据当前单元格位置判断展开后的A2单元格的序号是不是大于1,如果是,那么就执行同比计算表达式: (C2 - C2[A2:-1]{B2==$B2})/C2[A2:-1]{B2==$B2} ,否则返回0。

这个表达式的含义和上面D2单元格的差不多,大家可以对照理论,这里就不再赘述。需要注意的是,这E2单元格这个求同比增长率表达式当中,两次用到了C2[A2:-1]{B2==$B2}表达式,为减少重复计算,提高性能,我们可以将上面的表达式改成下面的多行脚本样式。

if(&A2>1){
    var prev=C2[A2:-1]{B2==$B2};
    return (C2 - prev)/prev;
}else{
    return 0;
}

在上面的多行脚本当中,对于C2[A2:-1]{B2==$B2}表达式只计算一次,所以上面的多行脚本在运行时性能较好。

最后还需要给D2和E2单元格添加一个数字类型的格式化,格式化模式为#.##%,如下图:

image-20211109110538895

保存后就可以看到预期效果。

results matching ""

    No results matching ""