【问题标题】:EOMONTH returns the 1st day of the next month for months with 30 daysEOMONTH 以 30 天返回下个月的第一天
【发布时间】:2021-09-12 06:46:04
【问题描述】:

当我使用下面的公式时,EOMONTH 函数的结果 返回具有 30 天而不是指定月份的最后一天的任何月份的下个月的开始。月份和年份是正确的,所以我很确定在另一个函数中使用它是 EOMONTH。 例如,B3 中的结果应该是“11/31/1965”,但它返回“12/1/1965”。

=DATE(YEAR(B2),MONTH(B2)+6,DAY(TEXT(EOMONTH(MONTH(B2)+6,0))))

我曾尝试减去一天,但它会在 31 天 (30) 的月份中返回月末 -1。所以我在另一种情况下也有同样的问题。

我还使用 IFS() 来计算 30 天的月份,它以同样的方式错误计算日期。

=IFS( MONTH(B2)+6 = 4,DATE(YEAR(B2),MONTH(B2)+6,DAY(EOMONTH(MONTH(B2)+6,0))-2) , 月(B2)+6 = 6,DATE(YEAR(B2),MONTH(B2)+6,DAY(EOMONTH(MONTH(B2)+6,0))-2) , 月(B2)+6 = 9,DATE(YEAR(B2),MONTH(B2)+6,DAY(EOMONTH(MONTH(B2)+6,0))-2) ,
月(B2)+6 = 11,DATE(YEAR(B2),MONTH(B2)+6,DAY(EOMONTH(MONTH(B2)+6,0))-2) , TRUE ,DATE(YEAR(B2),MONTH(B2)+6,DAY(EOMONTH(MONTH(B2)+6,0)) ) )

EOMONTH 函数本身,我只是将日期作为字符串传递,它可以正常工作(F 列)。

知道我做错了什么吗?

提前致谢。

【问题讨论】:

    标签: google-sheets excel-formula google-sheets-formula


    【解决方案1】:

    是的,正如@player0 所解释的那样,您不能只是在一个月中添加一些内容并将其输入到 eomonth。试试放

    =eomonth(month(B2)+6,0)
    

    到 B3(格式化为日期)。

    你得到

    1/31/1900
    

    为什么? month(b2)+6 给出 11(这只是一个数字)。谷歌表格中的日期表示为自 1899 年 12 月 31 日以来的天数。所以 11 格式化为日期给出 1/11/1900。应用 eomonth 得出 1900 年 1 月的最后一天,即 31 日。将其输入您的公式将给出 11/31/65,但该日期不存在,因此您得到 12/1/65。

    如果你想前进 6 个月,然后得到该月的最后一天,你需要

    =eomonth(date(year(B2),month(B2)+6,1),0)
    

    您也可以使用 Edate 函数,该函数不会滚动到下个月的第一天:

    =eomonth(edate(B2,6),0)
    

    【讨论】:

    • 谢谢player0!了解 EOMONTH 返回的内容和详细的解释非常好,我很感激您的帮助。
    【解决方案2】:

    EOMONTH 不理解MONTH。相反,它将其转换为日期。要使用EOMONTH,您需要提供有效日期

    =EOMONTH(B2, 0)
    

    【讨论】:

      猜你喜欢
      • 2013-08-30
      • 2017-08-03
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      相关资源
      最近更新 更多