小伙伴们好啊,今天老祝和大家分享一个实用的日期计算公式。

如下图所示,是某单位的固定资产明细表,(为了便于演示,里面的项目有所删减),需要根据A列的启用日期和F列的计提年限,来计算该资产在本年度中的折旧月数

已知固定资产折旧的计算规则为入账次月开始计提,使用年限到期后的当月照提折旧,所以这里咱们要先计算出初始折旧日期和到期日期。

初始折旧日期

也就是启用日期次月的第一天:

=EOMONTH(A2,0)+1

EOMONTH函数用于返回某个日期之前或之后月的最后一天,这里的第二参数使用0,表示返回第一参数所在月的最后一天,再加上1,就得到次月第一天的日期了。


折旧到期日期

也就是从实际折旧日期开始,N个月后的日期:

=EDATE(EOMONTH(A2,0)+1,F2*12)

EDATE函数用于根据指定月数,返回某个日期之前或之后月数的日期。

先用F2单元格中的使用年限乘以12,得到固定资产的折旧总月数。然后以折旧开始日期为基准,得到该月数后的日期。


咱们先把这两部分公式备用,接下来看看在计算本年折旧月数时还要考虑的两个问题:

一:本年折旧的起始日期

如果初始折旧的日期早于本年1月1日,就从本年的1月1日开始算起,否则就从初始折旧日期开始算起。

这部分的计算,咱们可以使用MAX函数来完成:

=MAX(EOMONTH(A2,0)+1,"2019-1-1")

也就是从“初始折旧日期”和本年的1月1日之中,提取最大的一个日期。


二:本年折旧的截止日期

如果折旧到期日期晚于本年12月31日,就到本年的12月31日截止计算,否则按实际的折旧到期日期计算。

这部分的计算,咱们可以使用MIN函数来完成:

=MIN(EOMONTH(EDATE(A2,F2*12),0),"2019-12-31")

也就是从“折旧到期日期”和本年的12月31日之中,提取最小的一个日期。


到了这一步,本年折旧计算的开始日期以及截止日期就都计算出来了,接下来,咱们再使用DATEDIF函数计算出这两个日期之间的间隔月数就OK了。

DATEDIF函数的用法是:

DATEDIF(开始日期,结束日期,日期间隔类型)

由于DATEDIF在计算月数时,从1月1日到2月1日这样的整月数才算一个月,因此在本例计算中,本年折旧的截止日期还要再加上一天。


最后咱们要做的,就是把以上公式组合到一起了:

在G2单元格输入以下公式,向下复制,OK了:

=DATEDIF(MAX(EOMONTH(A2,0)+1,"2019-1-1"),MIN(EOMONTH(EDATE(A2,F2*12),0),"2019-12-31")+1,"m")

虽然公式看起来很长,但是只要把咱们前面的每一步都认真读一下,理解公式也就是水到渠成的事了。

今天的练习文件在此,你也试试吧。

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

提取码: 8ff5


©著作权归作者所有:来自51CTO博客作者mob604756eca2df的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. SQL中如何求解连续N天都满足的问题
  2. 玩转 Linux 环境下日期的语法
  3. Android(安卓)自定义滚动选择日期
  4. Android常用控件(按钮、选择框、日期时间控件)
  5. (ios实现)用c/c++混合编程方式为ios/android实现一个自绘日期选
  6. Android定制日历,支持周月切换,日期标记,农历显示,节假日
  7. android 点击EditText 弹出日期选择器DatePickerDialog
  8. Android——使用DatePicker和TimePicker显示当前日期和时间
  9. Android根据当前时间获取前面的时间日期,或者之后的时间日期

随机推荐

  1. Android UI属性大解
  2. 国内目前最全面的介绍——Android中的Bro
  3. Hook android系统调用研究(一)
  4. android 建数据库 SQLite 存储sd 卡或者
  5. Android应用程序进程启动过程的源代码分
  6. Android网络连接判断与处理
  7. 安卓布局之线性布局(Linearlayout)
  8. Android EditText取消自动焦点获取
  9. 【Android】Android Layout Binder——根
  10. android 绘图