昨天,发布了文章《你可能从来没用透视表干过这件事,太有意思了!》,其中用透视表实现了月历的显示方式,并且提到,“月历型”报表的问题,众多朋友表示非常期待。
甚至,有朋友提到,如果用月历型报表展示疫情的情况,应该会很赞:
的确,在很多与时间相关的分析上,通过月历的方式进行展示,可能在一定程度上比较符合目前大多数人的工作或生活习惯,毕竟,大家都活在一周7天的模式中,很多计划的安排和节奏的把控可能都与月历的形式相关。
那么,在讲相对复杂的月历型报表之前,我们先来做个简单的例子,即做一个按自己(公司)的休假安排的月历。
Step 01-准备数据
为了方便,我们直接把休假的日期做到日期表里,即增加2列,分别标识哪一天是假期,具体是什么假(很多情况下,每个公司每个员工都有不同的休假时间,通常会单独构建一张表,然后跟日历表做关联——这种情况我们后面再讲),如下图所示:
Step 02-将数据导入PQ并进行初步处理并加载到PP数据模型
将日期表的数据导入PQ,并在PQ中用换行符及横杠连接日、假期及备注等相关信息:
代码语言:javascript复制= Text.From([日])
& "#(lf)"
& Text.Combine({[假期], [备注]}, "-")
为什么要在这一步进行这样的处理而不直接在后面的PP(DAX)里进行相应的处理?
因为目前Excel里的PP还不支持UNICHAR函数(PBI是支持的),难以实现换行处理。
处理完毕,将数据加载到Power Pivot数据模型:
Step 03-在PP中添加度量,并创建透视表
在PP中创建度量,如下图所示:
这里的MIN可以改为MAX等函数,或结合HASONEVALUE等函数来写,因为这里很简单,每天的值是固定的,所以简单用MIN即可。
Step 04-通过透视表生成休假月历
前面准备好相应的日期表和度量后,即可在透视表中直接生成2020年休假月历表:
Step 05-设置透视表的分类汇总、总计项及报表布局方式
跟我们前面做日历一样,分类汇总和总计行是没有意义的,所以进行禁用,并设置报表布局格式为表格形式,隐藏“周”列,如下图所示:
Step 06-设置换行及文本格式
前面我们在PQ里做字符连接的时候,加上了换行符,但在实际创建透视表的时候,换行符没有起作用,这个问题跟我前面文章《如何将多项内容动态合并成一个单元格内换行显示?为什么上传到Excel却没有换行?》里的情况类似,解决方法一致,即选中透视表所有数据后,操作一次“自动换行”(同时设置一下文本居中)即可:
Step 07-添加条件格式
用公式法设置条件格式,条件公式为:= FIND("假",D5),其中D5为选中透视表值区域时的活动单元格。
这时,我们即完成了休假月历的基本制作,后面大家还可以尝试继续对格式进行调整,添加切片器等,做成自己喜欢的样子,比如我最后得到结果如下:
五一又放5天哦!今年的假期实在有点儿多!
您准备怎么过?记得别睡太多……
同时,这里还有一个问题,留给大家解决:
透视表的行高怎么固定?