|本节内容为Excel输出日报(周报、月报)的自动化实例讲解,篇幅较长,文末可获取本节课讲解的数据案例。
涉及知识点:
1、Sum函数求累计
2、插入组合框控件
3、Vlookup函数
4、Match函数
5、Index函数
6、环比&同比
7、If函数嵌套
8、Text函数
9、Concatenate函数
10、offset函数
11、组合公式
12、Excel粘贴为图片
背景:
事情是这样的,小明每天都要进行日报通报,统计每天的全量用户数、消费用户数以及潜在用户数,算出价值用户数占比,且每个数都要与前一日对比,输出一大串文字并生成图片。每天的内容都是一样的,只是数字不一样,之前小明是每天都算出这些数字,然后再从日报中更改相应的部分,这样的工作重复个一两年也是会把人的精气神熬没了的呀。小明问我为什么他学了那么多公式,却依旧用不好Excel?
传统日报:
【5/16日报】
1、截止目前,全量用户数累计XX,环比昨日上升XX;
2、价值用户数占比为XX,环比昨日下降XX
(大段文字,单调枯燥,工作重复)
自动化后的日报:
因此我决定写一篇Excel实例应用的文章,用Excel进行日报自动化。当然本文应该算是半自动化,数据还是要手动录入,若要实现完全的自动化,还需仰仗VBA,这个本章暂不涉及,所以是半自动化。
注:本篇文章所用数据为虚构的非真实数据,并无实际意义。
一、原始数据区
原始数据是这样的:日期、全量用户数累计、消费用户数(累计)、潜在用户数(累计)
二、原始数据计算辅助列
首先我要算出消费用户数的累计占比,用累计消费用户数除以累计全量用户数得到。
潜在用户数的累积占比同理:
还要算出价值用户数累计占比,为消费用户数累计占比加上潜在用户数累计占比
好了,累计的数目全部算好了,下面来算每日的用户数,这个很容易理解,5月2日的全量用户数等于5月2日的累计全量用户数-5月1日的累计全量用户数。
同理,求出消费用户数每日和潜在用户数每日,以及消费用户数每日占比、潜在用户数每日占比和价值用户每日占比。
PS:这里插一句题外话,上文是已知累计求每日的数,是用当日减前日,若已知每日求累计,如何求?我们发现用当日的数加上前日的数好像不对了,因为当公式下拉的时候,得到的每一项的值都是当日加前日,就只有两个数据相加,实际上我需要的是当日以前所有的数据相加,这里就要用到sum函数。Sum($I$2:I2),什么意思呢?$I$2是被绝对引用了,不能变,能变的是没有被引用的I2,第一个单元格不明显,那我们看第三个单元格,从I2加到I4,明白了吧。
收~
三、数据过渡区
数据源表太宽了,我们新建一张数据过度表,点击开发工具——插入——组合框。当鼠标变为十字的时候在Excel空白区画一个大小得宜的框,右键设置控件格式,在数据源区域选择原始数据中的日期一列,单元格链接随便选一个空白区域,下拉显示项数默认。这样我下拉框选择一个日期,如5月1日,在I1单元格就会出现日期对于的天数,1。
好,现在我的需求是每在下拉框中选择一个日期,在左面的数据通报表中便生成当前的数据。其实数据我们都有了,只有用一个vlookup函数就搞定了。
复习vlookup函数,=vlookup(找什么单元格,在哪个区域找,找目标区域哪一列的值,模糊/精确)
观察发现,每下拉日期会在I2单元格显示日期的天数,那么我们就以I2单元格为找什么的单元格,那么我们需要在原始数据中新增一列辅助列序号。
当日的数据给大家提供了一个vlookup的思路,那前一日的数据怎么v呢?v不了了,想一下在查找引用里我们还介绍过的其他的函数,match和index,如今派上大用场了。
再来回顾一下match函数,match函数主要是用来确定坐标的,Match函数返回指定范围内值所在的序号。
Lookup value:是要查找的值,这里是G26单元格张三
Lookup array:是要查找的范围,张三属于姓名,所以范围是姓名一列
Match type :同vlookup一样精确匹配0
要想实现我们想要的选择日期数据变换的效果,前日的数据的行应该为I1-1,列我们来用match函数选择。
=MATCH(A3,原始数据!C1:I1,0),要找的是A3单元格全量用户数每日这个字段在原始数据表字段行中是第几个。加上绝对引用下拉公式出来了列的坐标。
接下来我们在前日里用index函数来查找match坐标下的值,先来复习一下index,
Array:查找区域,这里的区域是原始数据中数值所在的区域
Row num:第几行,用match函数算出
Column num:第几列,用match函数算出
这样,前日的数据就通过match+index函数得到了。
其实当日的数值也可以用match+index函数得到,可以自己练习一下。
接下来求环比,今天的环比=(今天-昨天)/昨天。另外说一下,环比和同比的区别,举个列子,今天和昨天比是环比,今年的5月和4月比也是环比,但今年的5月和去年的5月就是同比,今年的今天和去年的今天是同比,明白意思了哈。
累计的数值同样可以用vlookup函数求出,在次就不赘述了。
再把这些环比占比的转化成百分比两位小数
在日报生成区输入生成日报的字符串,其中通过环比来判断上升下降的,应用if嵌套条件判断。=IF(D3>0,"上升",IF(D3<0,"下降","持平"))
上升下降的环比数虽然也是引用了数据通报区的数,但最好用text函数转化一下。
最后日报生成区的效果是这样的
在日报区用concatenate函数连接日报生成区的每一行单元格,连成一句话。
看这里,如果在日报生成区没有用text函数处理数值,在日报区就会出现以下效果,是我们不想要的。
日报区的最后效果是这样的,当选择不同的日期时,文字内容自动变化。
四、进阶
对自己要求高的人还想要动态地展示前7天的图表,这里用到offset函数,offset函数是以指定的引用为参照系,通过给定偏移量得到新的引用,返回的引用可以是一个单元格或区域。
首先要框选N2:T8区域,然后插入offset函数,按下图填入公式内容,并按下“ctrl+shift+enter”组合键,完成函数录入。
这里涉及到一个数组公式,同时按“ctrl+shift+enter”键,Excel会在公式两边自动加上{}大括号,数组公式是可以同时进行多重计算并返回一种或多种结果的公式。
如此对价值用户占比生成图表,图表便可随下拉控件框日期选择的不同进行前7日数据的变化了。如下动态图所示:
最后生成一个每日通报
效果如下动图,随日期的改变通报数字和图表也相应变化。
这里再分享一个小技巧,Excel是可以复制粘贴为图片的,所以我们的日报完全可以粘贴为图片发到群里。动态图粘贴为图片
本实例讲解到此结束,完结撒花~
后台回复:自动化,可得到本案例的原始数据及日报模板
提供入门级数据分析的学习路线规划,分享从Excel到统计学的干货。数据分析是一项技能,希望人人都能分析数据。