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"))
- 使用
DAYS
、SEQUENCE
和 IF
获取区间内所有日期的列表。
- 使用
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'"))
我想列出开始日期和结束日期列表之间的所有日期。我已经为每一行日期使用了序列公式,但我正在寻找一个单一的公式来工作,而不管我有多少行。非常感谢任何帮助
我在单元格 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"))
- 使用
DAYS
、SEQUENCE
和IF
获取区间内所有日期的列表。 - 使用
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'"))