内容发布更新时间 : 2024/12/27 13:03:19星期一 下面是文章的全部内容请认真阅读。
EXCEL教程帖-如何生成上中下旬序列
前几天,一位工程师在工作中遇到一个数据汇总整理中的问题,是要将图1这种一大堆历史数据,按年,按月,按旬进行汇总统计,想得到图2这种数据表,以便进行趋势跟踪分析。但是对数据透视表迷茫的童鞋来说,只能硬着头皮想办法写公式去实现,然后试了好久死活都写不出来。于是,可以想象一顿手工敲索引序列的残酷工作场面~
图1:原始数据表
图2:需要整理得到的数据表
老天啊,看到这是要整理从2009年开炉到2017年的数据啊,一个月有3条,一年就是36条,这一下子要敲近300多条索引记录进去完成此项工作,惨不忍睹。喜欢鼓捣EXCEL的我,看过好多别人写的EXCEL教程,还从没遇到过这种实战情况,于是下班后,我决心独自尝试攻克这个问题,并记录下解决的方案。以备将来哪天我也遇到这种狗血的统计方法而悲催的要加班。不多说了,开始试验啦~
思路 1:看看聪明的EXCEL会不会在拖拉序列时自己自动按规律创建。手工录入3行,然后选中这3行开始向下拖拽,惊喜的发现,原来EXCEL自己会创建啊!
图3:鼠标拖拽自动创建索引序列
你就得意吧!你以为你解决问题了,但是新的问题来了,当拖拽到12月以后,他们变成图4这个鬼样子!没有13月份啊!不过这样做也可以省去手工敲的一大堆工作量了,只需要在每年的12月份之后手工纠正一下也能凑合对付。
图4:索引序列创建出错了
思路2:咬牙写个公式自动生成。幸亏我对EXCEL的诸多函数使用还算熟练,应该能写出来。开始试了半天IF(),IF了半天也没IF出来。分析数据序列的变化规律,年度需要每36行增加1,月度需要每12个周期一循环且每3行增加1,旬始终是在上中下旬3个之间按顺序切换。好吧,那就一个一个分解解决。
旬的切换:
=INDEX({\上旬\中旬\下旬\
图5:旬切换的方法
说明:用MOD函数返回除以3的余数,再用INDEX从数组{“上旬”,”中旬”,”下旬”}里提取。ROW()获取当前行序号。
月度的切换:
=RIGHT(\
图6:月度的切换方法
说明:也可以用旬的那种切换方式来写,但由于是数字序列,可以直接算出来就没必要去数组里调取了。INT()是取整数位。
年度的切换:
=2017+INT((ROW()-2)/36)
如果是从2009年开始统计的话,这里的2017改成2009就可以了,以后直接往下拖公式就行了。