多条件if嵌套计算房租费用,差点蒙了!

小伙伴们好,最近一段时间在学习pq,所以没怎么更新,大家如果有问题可以加群提问。今天要分享的是一位群友的问题,他要计算公司员工当月的房租费用,但是有很多条件。具体问题看下面截图:

其中C2和D2单元格分别是每月的月初和月末日期,每过一个月都要更改。费用中有很多类别,他只要求算房租的,并把计算的各种情况给出来了,一共有3种,如紫色区域所示。每种情况又分为3种情况。我刚开始看起来觉得挺复杂的,挺蒙的,主要是没有分清这几种情况的关系。后面理清逻辑就好办了。

还是先把公式放出来,再慢慢说明。在E5单元格输入公式=IF(AND(D$2=EOMONTH(C5,0),D$2<>EOMONTH(D5,0)),IF(DAY(C5)<=10,1,IF(DAY(C5)<=20,0.5,0))*500,IF(AND(D$2=EOMONTH(D5,0),D$2<>EOMONTH(C5,0)),IF(DAY(D5)<=10,0,IF(DAY(D5)<=20,0.5,1))*500,IF(AND(D$2=EOMONTH(C5,0),D$2=EOMONTH(D5,0)),IF(D5-C5<=10,0,IF(D5-C5<=20,0.5,1))*500,""))),向下填充。公式有点长,条件比较多。

对于第1种情况,虽然说的是“当月1-10日入职,房租*100%;11-20日入职,房租*50%;20以后入职,房租*0%”3种情况,实际还有一个前提条件——就是当月入职且不是当月离职。当满足了这个提前条件才对下面的3个条件再一一判断。这样就构成了一个if函数的嵌套用法。

那如何判断是当月入职且不是当月离职呢?我们用的是eomonth函数,它是返回某月最后一天的日期。函数写法为EOMONTH(start_date, months),有2个参数。第一参数为起始日期,第2参数为推迟的月数,可以是正数,负数,0。如果第2参数是0,就返回本月的最后一天;如果第2参数是1(正数),就返回下个月(往后推1个月)的最后一天;如果第2参数是-1(负数),就返回上个月(往前推1个月)的最后一天。

大家可以看下图,以倒数第2个“2019/6/11”为例说明,推迟的月数是-3,就是向前推3个月,就是2019年3月,然后返回2019年3月的最后一天就是2019年3月31日。

了解了eomonth的用法,就可以继续看上面的判断了。要判断是否是当月入职,可以用=EOMONTH(C5,0)=D$2,就是判断入职日期的当月最后一天是否和D2单元格相等。如果相等就是当月入职。同时还要判断不是当月离职,可以用=EOMONTH(D5,0)<>D$2,就是判断离职日期的当月最后一天不等于D2单元格。这2个条件要同时成立,所以用=AND(D$2=EOMONTH(C5,0),D$2<>EOMONTH(D5,0))。

当这2个条件同时成立后,才判断入职日期是1-10日是什么情况,否则11-20日是什么情况,否则20日以后是什么情况。就要用到if的嵌套,=IF(AND(D$2=EOMONTH(C5,0),D$2<>EOMONTH(D5,0)),IF(DAY(C5)<=10,1,IF(DAY(C5)<=20,0.5,0))*500,第二种情况)。

但如果前提那2个条件不满足的话,也就是if函数的第1参数不成立的话,就不会进行后续更小分类的判断,这时就会转为第二种大的情况——是当月离职且不是当月入职。同样还是用eomonth判断,像第一种情况一样,我就不再详细说明了。=AND(D$2=EOMONTH(D5,0),D$2<>EOMONTH(C5,0))这部分是前提条件。=IF(AND(D$2=EOMONTH(D5,0),D$2<>EOMONTH(C5,0)),IF(DAY(D5)<=10,0,IF(DAY(D5)<=20,0.5,1))*500,第三种情况)这部分是更进一步的判断。如果第二种情况的前提条件不满足,就转为第三种大的情况。

第三种情况是当月入职且当月离职,=AND(D$2=EOMONTH(C5,0),D$2=EOMONTH(D5,0))这部分是2个前提条件,=IF(AND(D$2=EOMONTH(C5,0),D$2=EOMONTH(D5,0)),IF(D5-C5<=10,0,IF(D5-C5<=20,0.5,1))*500,"")这部分是进一步的判断。如果第3种的前提条件也不满足,最后返回空。

最后把这三种情况再嵌套在if函数里就可以了。主要是搞清楚它们之间的关系。先分为3大类,如果第一类的条件满足,就进行进一步的判断;如果第一类的条件不满足,就转为第二类,第二类的条件满足,进行进一步的判断;如果第二类的条件不满足,转为第三类,第三类的条件满足,进一步的判断,不满足,返回空。

链接:

https://pan.baidu.com/s/1UmoyKiIylB6ufof9ewztnA

提取码:0o3a

(0)

相关推荐

  • 财务人员经常与时间打交道,这么简单的时间函数怎么能不掌握呢?

    时间对于财务工作很重要,因为会计处理是需要分期的! 时间对于财务工作很重要,因为很多时间点是法定的! 所以,我们很多财务工作中需要"时间"! 在Excel中"时间&quo ...

  • 本月累计和本年累计,你会计算吗?

    前几天,我收到了一位小伙伴的求助,是这样两张表: 具体要求为: 1.月累计要计算本月1日到截至昨天的数据 2.年累计要计算1月1日到截至昨天的数据 这里涉及了三个日期:1月1日.本月1日.昨天 其中第 ...

  • 这些实用的日期函数,你都会了吗?

    HI,大家好,我是星光,这期咱们来聊一下有关过去和未来的函数问题-- 关于未来呢,首先请不要偶尔悲观,有个姓列的老师说过,面包会有的,牛奶会有的,将来一切都会有的--不过反正现在是没有的. 来,快请坐 ...

  • IF函数:和Excel讲条件你都不会,怎么学得好

    最近推送的几篇文章: 如何用假手机号.假邮箱来接收验证码?不想接骚扰电话.垃圾信息者必备! 有哪些用了就忍不住分享的年终结账必备工具? [目录导航]本公众号2019年推送文章分类列表 这些免费工具轻松 ...

  • 亚马逊FBA头程费用怎么计算?费用贵吗?

    我们首先来认识一下亚马逊FBA是什么 亚马逊FBA就是卖家把自己在亚马逊销售的产品存放到亚马逊当地的仓库,客户下单后,亚马逊负责打包.配送.收款.售后等一系列服务,并从中收取一定费用.如果卖家想要将产 ...

  • 162、儿子成长日记一一计算早餐费用

    ​2004年3月15日         3月8日总厂机关计生办组织的<激情飞歌>在后峡俱乐部拉开帷幕,各个单位都有节目.参演的浓妆艳抹.当观众的淡雅薄妆.女人的节日芳香的活动,聚到一起好比 ...

  • 如何快速计算措施费用

    算量在造价业被看成是最低级别人员从事的工作,甚至认为是工具就可以完成的任务.如果用这种态度来对待算量工作,算量的人最终将变为一台高级电脑,自己的劳动力成为其他人使用的工具,这样的工作将变得毫无创意和成 ...

  • excel如何快速计算上网费用

    我们经常去网吧上网,那么如何根据上网时间计算上网费用呢? 如图所示,打开"网费统计表"数据表,含有"机号"."上机时间"及"下机时 ...

  • excel如何快速计算通话费用

    如何根据通话时长来计算通话费用呢? 如图所示,打开"通话记录表",含有"序号"."通话秒数"及"计费单价/5秒"等信息, ...

  • 10月起,住房租赁税收优惠政策开始实施 看政策适用条件 分情况计算优惠

    2021年10月15日 来源:中国税务报 梁晶晶 10月1日,<财政部 税务总局 住房城乡建设部关于完善住房租赁有关税收政策的公告>(财政部 税务总局 住房城乡建设部公告2021年第24号 ...

  • 看政策适用条件 分情况计算优惠

    2021年10月19日 来源:中国税务报 作者:梁晶晶 10月1日,<财政部 税务总局 住房城乡建设部关于完善住房租赁有关税收政策的公告>(财政部 税务总局 住房城乡建设部公告2021年第 ...

  • Sumif函数是条件求和,这6种搭配通配符操作,让条件计算更高效

    从之前关于sumif函数的学习中我们都知道,这是一个对单一条件进行求和的函数,今天我们来讲解一下这个函数有哪些更牛的操作. 案例一:求出单一产品SZ01当月销量. 函数解析: SUMIF(B:B,'S ...

  • lazada开店注册流程、卖家必备条件及开店费用介绍

    ​lazada(来赞达),东南亚地区最大的在线购物网站之一.获得德国创业孵化器 RocketInternet桑威尔兄弟(SamwerBrothers)支持,Lazada的目标主要是新加坡.越南.印尼. ...