【问题标题】:Excel: get months between start and end date in given year or months through end date if start is in a prior yearExcel:如果开始在前一年,则获取给定年份的开始日期和结束日期之间的月份或结束日期的月份
【发布时间】:2018-08-29 16:39:12
【问题描述】:

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

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

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

非常感谢您的任何帮助!

【问题讨论】:

  • 如果您只对 2017 年的数据感兴趣,请将 F2 更改为 1/1/2017F2 中较早的一个。而对于缺席的终止日期,如果 F2 为空,则将其更改为一年中的最后一天。

标签: excel date date-difference


【解决方案1】:

这是一种您正在寻找的方法,假设如下:

  • “雇用日期”是 F 列,并且始终是最早的日期
  • “Date of Eligibility”是 G 列,总是早于“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")))

打破它...

如果“任期日期”为空: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"))

如果“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)值以便运行不同年份的计算。

【讨论】:

  • 非常感谢!太棒了!旁注:这里有很多人对像我这样没有经验的人很粗鲁......感谢@benvc 在回答我的问题时教育我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
相关资源
最近更新 更多