利用报表中的变量解决复杂计算

问题描述:

如下图所示需要根据不同事件生成动态的时间表。格子总长度是固定的90个。起始时间和结束时间是根据不同的事件ID取得的,需要做到第一行是月份,第二行是该月的日期,第三行是根据起始时间和结束时间来进行的累计天数。



解决方法:

首先根据事件ID取得当前事件的起始日期和结束日期,分别放到A1,A2单元格内,在A3单元格中计算出自起始日期后90天的日期(因为需求中固定90个格子),D1和E1两个单元格中分别定义两个变量并且赋初始值为零 a=0 b=0

月份和该月的日期可以通过起始日期来进行动态展现。A2单元格是根据起始日期和90天后日期来进行动态的去月份的,因为考虑到有年底到下一年年初的可能做了条件判断。

A3单元格,日根据A2动态生成出的月份扩展出该月份的所有日期,并且判定了如果对应的月份为起始月份则取得起始日期的天,如果对应的月份为起始日期90天后的月份则取得该月的天,其他月份默认从1号到该月的结束日,满足了90个单元格的需求。

下面该通过利用之前定义的变量进行一些特殊需求的计算了。

在A4单元格中首先要计算当前单元格所对应的年月日,拼成日期型和从数据库中取得的事件结束日期进行比较,如果小于则进行天数的累加,引用临时变量a,每一个扩展列给a重新赋值,将上一列变量a的值+1赋值给变量a,即实现天数累计。否则重新进行累加引用变量b。


最后隐藏不需要展现的单元格,以及调整列宽行宽。就完成了这张表。这里也可以做成主子表的形式将参数传递进来,来进行一张表内展现多个事件的时间段结果。



热门文章