从 12 月到 1 月环绕一年
Posted
技术标签:
【中文标题】从 12 月到 1 月环绕一年【英文标题】:Wrap around year from December to January 【发布时间】:2016-12-28 19:47:47 【问题描述】:我设置了以下公式来确定某人的生日是否在下周到来。
=IF(AND(Q2>(TODAY()+4),Q2
*注意:Q2 是这个人的生日,但在 2016 年。(即 12/20/1978 实际上是 12/20/2016)
这行得通,除非我到了大约 12 月中旬,因为下周将延续到明年。我怎样才能让下周的范围环绕到明年的 1 月(即从 2016 年 12 月到 2017 年 1 月)?
【问题讨论】:
【参考方案1】:您可以使用 DATEDIF 获取两个日期之间指定的年、月或日的差异。 例如:
=DATEDIF("start_date", "end_date", "d")
=DATEDIF("1/11/2011", "10/11/2011", "d") 结果:9
从头开始:
Q3 = DATEDIF(今天,生日日期,"d")
=IF(AND(Q3>4,Q3
因此,您可以在 IF 语句中使用 DateDiff 来获取接下来几天的生日评估。值得注意的是,这种公式不是得到下周的周年纪念日,而是得到生日日期在今天4天到12天之间的生日。
【讨论】:
【参考方案2】:你可以用一个公式把日期放在当年
=date(2016,month(q2),day(q2))
考虑到日期加上几天可能是下一年,可以使用
=date(year(today()+ajustment),month(q2),day(q2))
你的整个公式看起来像这样:
=IF(AND(DATE(YEAR(TODAY()+4),MONTH(Q13),DAY(Q13))>(TODAY()+4),DATE(YEAR(TODAY()+12),MONTH(Q13),DAY(Q13))<(TODAY()+12)),"Yes","No")
现在这个公式也适用于新年的日期。
【讨论】:
这让我回到原来的问题 我在发布我的第一个公式后进行了一些编辑。这个现在可以跨年份变化而无需任何修改。 我认为成功了!【参考方案3】:问题在于您的解决方案取决于年份,而您应该只在月份和日期进行筛选。这可以通过使用 TEXT(...) 函数来完成。
例如:
=VALUE(TEXT(I2,"mm"))
将月份作为数字返回。这与您要查找的内容相近吗?
以下是使用这种方法的解决方案的外观:
=IF(AND(VALUE(TEXT(G2,"mm"))=VALUE(TEXT(TODAY(),"mm")),VALUE(TEXT(G2,"dd"))>(VALUE(TEXT(TODAY(),"dd"))+1),VALUE(TEXT(G2,"dd"))<(VALUE(TEXT(TODAY(),"dd"))+12)),"Yes","No")
此外,此解决方案与年份无关,因此您可以使用某人的实际生日,而不必每次都更改年份。
【讨论】:
你能详细说明一下吗?或者把它放在我展示的公式的上下文中。谢谢! 当您尝试比较日期还有多少天时,文本不会有太大用处。 当然会。您只需比较月份和日期即可使其生效。此外,转换为数字会有所帮助(请参阅最新编辑)。 这就是我所拥有的: Col P:文本格式的日期即。单元格 P2 = 1-2 Col Q:日期格式的生日即。 =DATEVALUE(P2) Col R: 下周是生日吗? IE。 =IF(AND(Q2>(TODAY()+4),Q2 那你应该选择 Jocimar 的回答。以上是关于从 12 月到 1 月环绕一年的主要内容,如果未能解决你的问题,请参考以下文章
8 版还没熟悉,EcmaScript 9 就来了,一年一更势不可挡!