Excel:获取给定年份中开始日期和结束日期之间的月份,或者如果开始日期是前一年,则获取结束日期之间的月份

Excel: get months between start and end date in given year or months through end date if start is in a prior year

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

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

然后,如果 "Term Date" 中没有任何价值(即他们仍然受雇),我也会 运行 遇到问题。我知道肯定有一个可以帮助我的公式,但我对 Excel 公式并不太了解,而且我在任何其他问题中都找不到类似的东西。我不能只将雇用日期更改为 2017 年 1 月 1 日,因为那样会影响资格。

非常感谢您的帮助!

假设以下情况,这是您正在寻找的方法:

  • "Date of Hire" 是 F 列并且总是最早的日期
  • "Date of Eligibility" 是 G 列,总是早于 "Term Date"
  • "Term Date" 是 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")))

分解...

如果 "Term Date" 为空:ISBLANK(H2),则获取截至 2017 年底的就业月数。

获取截至 2017 年底的就业月数的公式部分:IF(YEAR(F2)=2017,DATEDIF(F2,DATE(2018,1,1),"m"),12)

如果 "Date of Hire" 在 2017 年期间:YEAR(F2)=2017,则获取从 "Date of Hire" 到 2017 年底的月数:DATEDIF(F2,DATE(2018,1,1),"m"),否则假设 "Date of Hire"在 2017 年之前导致 12 个月:12.

如果"Term Date"不为空,则通过"Term Date".

得到2017年的就业月数

公式部分通过"Term Date"得到2017年就业月数:

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

如果"Date of Hire"和"Term Date"相同:YEAR(F2)=YEAR(H2),则获取日期之间的差值:DATEDIF(F2,H2,"m"),否则获取日期的12月31日之间的差值前一年和 "Term Date":DATEDIF(DATE(YEAR(H2)-1,12,31),H2,"m").

重要提示...

您可以更新公式以适用于任何计算年份,方法是将公式部分中的 2017DATE(2018,1,1) 替换为对单元格的引用,以获取截至 2017 年底的就业月数您可以在其中输入相关值,以便 运行 不同年份的计算。