Google 工作表 - 开始日期列表和结束日期列表之间的日期列表

Google sheets - List of dates between a list of start and end dates

我想列出开始日期和结束日期列表之间的所有日期。我已经为每一行日期使用了序列公式,但我正在寻找一个单一的公式来工作,而不管我有多少行。非常感谢任何帮助

我在单元格 E2 中输入了这个公式

=sort(query(sequence(max(A2:B)-min(A2:B)+1,1,min(A2:B)),
"where "&join(" or ","(Col1>="&filter(A2:A,A2:A<>"")&" 
and Col1<="&filter(B2:B,B2:B<>"")&")")&
" format Col1 'dd.mmm.yyyy'"))

首先,我们列出A2:B范围内从小到大的所有日期,然后我们使用查询将所有不在指定区间内的日期移除。

虽然对此已有答案,但如果同一日期在多列中重复出现,则不会反映在结果列表中。因此,如果您希望重复包含在多个间隔中的日期,这里有一个替代方案:

=ARRAYFORMULA(QUERY(FLATTEN(IF(DAYS(B2:B4,A2:A4)>=SEQUENCE(1,1000,0),A2:A4+SEQUENCE(1,1000,0),"")),"where Col1 is not null"))

  • 使用 DAYSSEQUENCEIF 获取区间内所有日期的列表。
  • 使用 FLATTEN 将所有值放在一个列中。
  • 使用 QUERY 删除空值。

尝试:

=ARRAYFORMULA(QUERY(FLATTEN(IF(DAYS(B2:B, A2:A)>=SEQUENCE(1, 10000, 0), 
 A2:A+SEQUENCE(1, 10000, 0), )), "where Col1>0 format Col1'dd.mmm.yyyy'"))