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")
.
重要提示...
您可以更新公式以适用于任何计算年份,方法是将公式部分中的 2017
和 DATE(2018,1,1)
替换为对单元格的引用,以获取截至 2017 年底的就业月数您可以在其中输入相关值,以便 运行 不同年份的计算。
简要背景:我在保险行业工作,由于各种税收原因,我们经常需要知道该员工一年中有多少个月受雇,以及他们获得了多少个月的保险。雇员在受雇 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")
.
重要提示...
您可以更新公式以适用于任何计算年份,方法是将公式部分中的 2017
和 DATE(2018,1,1)
替换为对单元格的引用,以获取截至 2017 年底的就业月数您可以在其中输入相关值,以便 运行 不同年份的计算。