Excel formula 如何计算特定年份中两个日期之间的月数
我在Excel/Google表格中有一组可能是随机的开始日期和学期长度Excel formula 如何计算特定年份中两个日期之间的月数,excel-formula,Excel Formula,我在Excel/Google表格中有一组可能是随机的开始日期和学期长度 Example - considering 2019 as the year in question January 2017, 24 months January 2019, 12 months April 2019, 12 months May 2020, 7 months 我需要计算一年中每个学期的月数 Example answers - number of months in given timeframe tha
Example - considering 2019 as the year in question
January 2017, 24 months
January 2019, 12 months
April 2019, 12 months
May 2020, 7 months
我需要计算一年中每个学期的月数
Example answers - number of months in given timeframe that are in 2019
February 2017, 24 months A: 1 months
January 2019, 12 months A: 12 months
April 2019, 12 months A: 9 months
May 2020, 7 months A: 0 months
使用
DATEDIFF
计算开始和结束日期很容易。如果没有极其复杂的逻辑,我无法确定一年中会有多少个月
除了一系列嵌套条件之外,我是否遗漏了一些东西来确定起始月份是否在指定的年份中
获取嵌套太深的条件语句并不理想,因为需要添加额外的层,例如是否更新术语等,这会增加额外的复杂性 假设
开始日期和月份都是单独列中的字符串。
可以将它们转换为帮助器列中的实际日期。
数据按下图进行布局
一般的
我只是用一种简化的方法来阐述我的解决方案。您可以依次嵌套公式、硬代码项等以满足您的需要
过程
将开始日期从A6中的字符串转换为实际的excel日期,并将其置于D6中。我只是使用了以下公式,但根据系统设置,还存在其他方法,可能需要其他方法
=DATEVALUE(A6)
根据月份偏移计算结束日期,并将其放入E6中。为了实现这一点,我使用了以下公式,这与您似乎理解的DATEDIFF不同
=EOMONTH(D6,LEFT(B6,FIND(" ",B6)-1)-2)+1
将您要查找的给定年份放在指定的单元格中。在这种情况下,我选择了F1
根据F1中的整数生成一年中第一个月和最后一个月的实际日期。我把它们分别放在F2和F3中
=DATE(F1,1,1)
=DATE(F1,12,1)
Note: These can easily be embedded in formulas but can be cleaner and make formulas easier to read.
接下来,您需要测试6个条件:
=IF(OR(E6<$F$2,D6>$F$3),0,
=IF(或(E6$F$3),0,
注:公式未完成。if的错误部分未提供,我们可以在其中检查条件3
=IF(OR(E6<$F$2,D6>$F$3),0,IF(AND(D6<=$F$2,E6>=$F$3),12,
=IF(OR(E6$F$3)、0、IF(AND(D6=$F$3)、12、,
这样,检查开始日期和结束日期是否跨越当前年。注意我使用= =,如果周期开始日期等于当前年的开始,或者结束日期等于当前年份的结尾,则其结果相同,并保存以后进行数学计算。再次,没有提供虚假的一面。输入,你需要检查条件4
检查周期开始日期是否早于给定的年份。您不需要同时检查结束日期,因为如果结束日期是在您知道之前的条件3检查已经捕捉到它之后。如果是,结束日期的月份将告诉您给定年份中有多少个月。周期结束的月份计算公式为1=IF(OR(E6<$F$2,D6>$F$3),0,IF(AND(D6<=$F$2,E6>=$F$3),12,IF(D6<=$F$2,MONTH(E6),
=IF(OR(E6$F$3)、0、IF(AND(D6=$F$3)、12、IF(D6这个建议很有效。下面是我做的一些额外修改
无论是自动续约,还是预期终止,都必须添加。不过,根据您的建议,这只是一个简单的修改
参考图像
审查的年份是R2——在本例中为2019年
开始日期-H列
术语长度-第I列
续订状态-第K列(如果设置为“是”,则假定期限无限期地继续)
结束日期-第P列
Q列所述年度内发生的从给定期限算起的月份
第二季度是年度审查中的门店
示例中使用的行是208(对不起)
第p列中的公式检查续期是否设置为Y或N。如果N使用所示的期限结束。如果Y将期限结束设置为相关年份的12/31
=IF(K208="N",EOMONTH(H208,I208-1),DATE($Q$2,12,31))
请注意,有一个细微的变化将结束日期表示为月底,因为我关心的是完整的月份,而不是截止日期
例子
从2019年2月开始为期一个月的期限为2019年2月1日至2019年2月28日(不是2019年2月1日至2019年3月1日)
从2019年2月开始为期三个月的期限为2019年2月1日至2019年4月30日(不是2019年2月1日至2019年5月1日)
然后,我基本上使用了Forward Ed for的公式,根据他描述的逻辑来计算我关心的月份数
=IF(OR(P208<DATE($Q$2,1,1),H208>DATE($Q$2,12,31)),0,IF(AND(H208<=DATE($Q$2,1,1),P208>=DATE($Q$2,12,31)),12,IF(H208<=DATE($Q$2,1,1),MONTH(P208),IF(P208>=DATE($Q$2,12,31),12-MONTH(H208)+1,MONTH(P208)-MONTH(H208)+1))))
=IF(或(P208日期($2,12,31))、0、IF(和(H208=日期($2,12,31))、12、IF(H208=日期($2,12,31))、12个月(H208)+1个月(P208)-月(H208)+1个月)
你能解释用于推导答案的逻辑吗?不要遵循“大量复杂的逻辑”->你可以分享这个版本来澄清你尝试了什么+你要去哪里(逻辑)。请编辑您的问题,并提供更多关于逻辑的详细信息。您想要实现的目标完全不清楚。当然,我很高兴其他人不这么做。这个问题的措辞就像是一个更简单的解决方案,但我找不到给定日期、给定条款和解决方案之间的模式。给定年份是2019年
=IF(K208="N",EOMONTH(H208,I208-1),DATE($Q$2,12,31))
=IF(OR(P208<DATE($Q$2,1,1),H208>DATE($Q$2,12,31)),0,IF(AND(H208<=DATE($Q$2,1,1),P208>=DATE($Q$2,12,31)),12,IF(H208<=DATE($Q$2,1,1),MONTH(P208),IF(P208>=DATE($Q$2,12,31),12-MONTH(H208)+1,MONTH(P208)-MONTH(H208)+1))))