按顺序列出两个日期之间的所有月份?

按顺序列出两个日期之间的所有月份?

我试图列出单个日期之间的所有月份在 Excel 中。到目前为止,我有以下内容:

SEQUENCE( ,"结束日期"-"开始日期" +1, "开始日期")

这几乎满足了我的要求,但列出了两个日期之间的每一天。我应该做哪些简单的修复,以便它按月递增并按顺序显示月份/年份?谢谢

答案1

输入开始日期A1结束日期为A2. 选择一个单元格并输入:

=DATE(YEAR(A1),SEQUENCE(1,DATEDIF(A1,A2,"M")+1,MONTH(A1),1),1)

在此处输入图片描述

笔记:

这是因为:

=SEQUENCE(1,DATEDIF(A1,A2,"M")+1,MONTH(A1),1)

生成月份数字的连续列表10,11,12,13,14,15,16. 而 13 号月是次年 1 月。

答案2

我不确定这是否更容易,但你可以尝试:

=EDATE(开始日期,SEQUENCE(1,月份数,0,1))

如果您没有月份数,只有开始和结束日期,那么尝试:

=EDATE(StartDate,
       SEQUENCE(1,
                1+DATEDIF(StartDate,EndDate,"M")
        )
      )

作为一行,它是:

=EDATE(开始日期,SEQUENCE(1,1+DATEDIF(开始日期,结束日期,"M")))

EDATE 会为您提供 n 个月后的日期。DATEDIF 会获取两者之间的月份数,但通常您希望 Jan-Dec 为 12 而不是 11;这就是为什么要额外添加 +1。SEQUENCE 会构建要传递给 EDATE 的“增量”数组。SEQUENCE 的第一个参数表示将数组保留为一行。列数是月份数。数组中的第一个单元格将是 0,然后是 1、2,依此类推,直到达到完整计数。

当我需要动态日期列时,我已经使用这种方法一段时间了。

答案3

我相信你只在寻找这个:

在此处输入图片描述

  • 单元格 AN2 中的公式:

    =IF(ROW()=2,0,IFERROR(INDEX(MONTH(EDATE(AL$1,ROW(AN$1:INDEX(AN:AN,DATEDIF(AL$1,AL$2,"m"))))),COUNT(AN$1:AN1)),""))
    
  • 根据需要调整公式中的单元格引用。

  • 您可以将 0 替换为 1(表示第一个月,即一月)。

相关内容