分享

巧用Roundup和Ceiling函数,将月份转化为季度

 倦鸟依林 2019-11-11

昨天,表格学院群里有人提了这样一个问题:

大概的需求是,将每个季度(如Q1)的数据快速填到对应的月份(1、2、3月),来看表格:

例如,A列2000年1季度对应的B列值是0.5171,则目标是将0.5171快速填入到D列的D2、D3、D4单元格;而2季度的值是0.6141,因此,要将此值填入到D列的4、5、6三个月。

你可能会说,直接复制粘贴不就好了吗?费劲干嘛!

在这个简单的案例里,当然直接复制粘贴就OK,花不了多少时间。但是,假如是一张大表,几百上千行呢?

所以,我们还是要找到高效的处理方法。

为了解答这个问题,我照着提问模拟了一组数据:

▲ 案例:将季度值填充到对应的月

如图,C列是季度对应的值,D列是月份,现在要想办法将C列的数值根据所属的季度填入到E列的对应月份中。

如果是你,你会怎么解决这个问题呢,思考1分钟……。

下面说说我的思路。

在这里,我们可以把B、C两列看成一个数据源,现在要想办法根据D列的月份从数据源中匹配季度值,这样就把这个问题转化成了一个数据匹配的问题。

我们自然而然地想到VLOOKUP函数,纵向查询和匹配。

但是,问题在于D列的年月与B列的年和季度格式上完全不同,怎么匹配呢?

显然,这里涉及到一个季度和月份之间的转化,也就是我们怎么把1、2、3月份与1季度形成对应关系,把4、5、6月份与2季度形成对应关系,依此类推。

这是解决问题的关键。

单纯从数字讲,我们要想办法把1、2、3转化为1,4、5、6转化为2,7、8、9转化为3,10、11、12转化为4。

我想到了两种函数的方法——

1、用Roundup函数处理

首先用月份值除以3,得到的结果一定是一个小数(每季度前两个月)或者整数(每个季度最后一个月),而只要把结果用Roundup向上舍入,保留0位小数就能得到对应的季度。

比如,1月份,1/3=0.333,用Roundup(1/3,0)向上舍入,结果为1,即1季度;3月份,用Roundup(3/3,0),结果仍然为1。

因此,我们可以编写公式如下:

先在E列(E2)中输入公式:

=YEAR(D2)&" "&ROUNDUP(MONTH(D2)/3,0)&"Q"

该公式的目的是构造一个与B列季度信息格式一致的辅助列,然后把问题转化成VLOOKUP数据匹配。

构造好E列之后,就很简单了,用VLOOKUP在F列直接写公式完成匹配。

2、用Ceiling函数处理

除了用Roundup函数,这个问题也可以使用Ceiling函数来解决。

Ceiling是“天花板”的意思,在函数中也是一个向上舍入函数,它可以将一个数字向上舍入为基数的最小倍数。

举例,公式“=Ceiling(15,6)”意为把15向上舍入为6的最小倍数,即6的3倍,结果为18;公式=Ceiling(0.56,1”意为把0.56向上舍入为1的最小倍数,也就是1倍,结果就是1。

因此,这个案例中,我们如果使用Ceiling函数,前面的公式就修改如下:

=YEAR(D2)&" "&CEILING(MONTH(D2),3)/3&"Q"

小小案例,包含诸多技巧。Year、Month、Roundup、Ceiling、Vlookup,你学会了吗?

好了,今天的内容就介绍到这里,我是徐老师,感谢阅读。如果你还有其它思路和解决办法,欢迎留言

 作者    徐军泰 

——Excel畅销书作者,表格学院创始人,著有国内首部Excel动态图表书籍《左手数据,右手图表》,唯库、一起听课星球、人人都是产品经理等平台约讲师。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多