从 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 月环绕一年的主要内容,如果未能解决你的问题,请参考以下文章

sql怎么查一年里所有物品最后一次的采购价格?

在一年一度高交会,看城市发展的“AI三部曲”

思想一年一年进步才好

8 版还没熟悉,EcmaScript 9 就来了,一年一更势不可挡!

SQLServer、Oracle获取当前年份的1月到当前月之间的所有月份

为什么说Salesforce开发是最受欢迎的职位?