Excel:获取给定年份的开始日期和结束日期之间的月份,或者如果开始日期在上一年中则获得截止日期为止的月份

时间:2018-08-29 16:39:12

标签: excel date date-difference

简要背景:我从事保险行业,由于各种税收原因,我们经常需要知道员工一年中有多少个月的工作时间,以及为他们提供多少个月的保险。雇员在受雇60天后的第一个月第一天就有资格获得保险。

获取资格日期很简单。从技术上讲,获得雇用和提供的月数很简单……直到我遇到跨越多年的情况。就我的报告而言,我只需要知道2017年的数据即可。例如,R3在2017年仅受雇两个月,因此我需要将“ #Mon Emp”设为2。我目前正在使用 = DATEDIF(F2,H2 + 15,“ m”),但这给了我6个月的时间。

然后,如果“任期日期”中没有值(即仍在使用),我也会遇到问题。我知道必须有一个可以帮助我的公式,但是我对Excel公式的知识不是太了解,在其他任何问题中也找不到类似的东西。我不能只将聘用日期更改为2017年1月1日,因为这样会弄乱资格。

Data set up

非常感谢您提供的所有帮助!

1 个答案:

答案 0 :(得分:1)

以下是假设您要寻找的方法:

  • “雇用日期”是F列,始终是最早的日期
  • “资格日期”在G列中,始终早于“任期日期”
  • “有效期”在H列中,可以为空白,也可以是2017年的日期
  • 下面的公式输出的是2017年使用的完整月份的数量,您应该能够轻松地换算出该年提供的福利月份的数量(以下示例显示第2行数据的公式)

公式...

IF(ISBLANK(H2),IF(YEAR(F2)=2017,DATEDIF(F2,DATE(2018,1,1),"m"),12),IF(YEAR(F2)=YEAR(H2),DATEDIF(F2,H2,"m"),DATEDIF(DATE(YEAR(H2)-1,12,31),H2,"m")))

打破现状...

如果“任期日期”为空:ISBLANK(H2),则获取到2017年底的工作月数。

“公式”部分以获取到2017年底的工作月数:IF(YEAR(F2)=2017,DATEDIF(F2,DATE(2018,1,1),"m"),12)

如果“雇用日期”在2017年期间:YEAR(F2)=2017,则获得从“雇用日期”到2017年底的月份数:DATEDIF(F2,DATE(2018,1,1),"m"),否则假设“雇用日期”早于2017年,即12个月:12

如果“任期日期”不为空,则通过“任期日期”获得2017年雇用的月数。

“公式”部分,以获取到“任期日期”在2017年工作的月数:

IF(YEAR(F2)=YEAR(H2),DATEDIF(F2,H2,"m"),DATEDIF(DATE(YEAR(H2)-1,12,31),H2,"m"))

如果“雇用日期”和“任期日期”相同:YEAR(F2)=YEAR(H2),则得出日期之间的差额:DATEDIF(F2,H2,"m"),否则得到上一年12月31日与“有效期”:DATEDIF(DATE(YEAR(H2)-1,12,31),H2,"m")

重要说明...

您可以通过替换公式部分中的2017DATE(2018,1,1)来更新该公式以适用于任何计算年度,该部分使用对您所在单元格的引用来获取到2017年底使用的月数可以输入相关值以便进行不同年份的计算。