半年月报日期处理
1. 问题描述
很多时候为了全面反映情况,及时了解过去发展的状况及问题,一些分析部门会以月报的形式进行统计分析。日常数据库记录的信息比较多,可以统计出每月的信息,制作日报时,可以直接用sql处理好的关于月份的罗列。但有时,如果当月没有数据,我们希望在报表中也能有所展示,就可以通过对模板中的参数进行处理,从而得到选定时间段内的月份信息。
2. 案例讲解
2.1日期参数设置:
以半年期的月报为例,设置查询的开始时间start和结束时间end,均为日期参数,格式yyyy-MM。预览时,如果希望直接就展示出过去半年的情况,可以设置初始值为:
=IF(MONTH(TODAY())==1,DATE(YEAR(TODAY())-1,6,1),DATE(YEAR(TODAY()),MONTH(TODAY())-6,1))
公式中判断了其是否跨越一年。如现在是2015年9月,则展示日期为2015年3月至9月。
2.2表格部分罗列出选定时间区间的月份
如描述里所说,如果数据库里本身没有某个月的信息,该月份就不会被罗列。本文绕过sql,提供一种基于页面上已经选好的参数设置。
(1)随便选择一个单元格,本案例中以f1为例,写入值:
=RANGE(todate($start+'-01'),todate($end+'-01'),1) 罗列出选定时间段内的所有日期;
(2)然后再选一个单元格,比如g1,写入值:
=concatenate(year(f1),right(concatenate('0',month(f1)),2)) 拼接出罗列值的年份与月份,其中为了保持格式一致,我们选择以“201509”的方式显示,即1-9月显示时前面多个0;
(3)在需要展示月份的地方B3,写入=UNIQUEARRAY(g1),使用UNIQUEARRAY的目的是去除重复项。
模板设置截图如下:
3. 设置不需要展示的行为隐藏
预览如下:
|