You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求Google Sheets中两日期间第一个星期三的公式及报错解决

查找Google Sheets中两个日期之间的第一个星期三

需求说明

需要编写Google Sheets公式,找出指定日期范围内的第一个星期三:

  • 当范围是2023年1月5日至2023年1月11日时,结果为11日
  • 当范围是2022年1月5日至2022年1月11日时,结果为5日

尝试过程及问题

  1. 生成日期范围内的序列公式:
=sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5))
  1. 用WEEKDAY判断日期是否为星期三(WEEKDAY返回值为4):
=weekday(sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5)))=4
  1. 整合到FILTER函数时触发报错:
=filter(sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5)),weekday(sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5)))=4,1,1)

报错信息:
FILTER has mismatched range sizes. Expected row count: 7, column count: 1. Actual row count: 1, column count: 1.

  1. 期望的最终公式(未解决报错):
=to_date(index(filter(sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5)),weekday(sequence(days(date(2023,1,11),date(2023,1,5))+1,1,date(2023,1,5)))=4,1,1)))

解决方案

报错原因

FILTER函数末尾的,1,1是多余的筛选条件,这两个单个值和日期序列的7行范围大小不匹配,导致触发范围尺寸错误。

修正后的公式

简化版(使用LET避免重复计算)

=LET(
  start_date, DATE(2023,1,5),
  end_date, DATE(2023,1,11),
  date_seq, SEQUENCE(DAYS(end_date, start_date)+1, 1, start_date),
  TO_DATE(INDEX(FILTER(date_seq, WEEKDAY(date_seq)=4), 1))
)

直接修正原公式

=TO_DATE(INDEX(FILTER(SEQUENCE(DAYS(DATE(2023,1,11),DATE(2023,1,5))+1,1,DATE(2023,1,5)),WEEKDAY(SEQUENCE(DAYS(DATE(2023,1,11),DATE(2023,1,5))+1,1,DATE(2023,1,5)))=4),1))

公式说明

  • 移除FILTER函数中多余的,1,1参数,确保筛选条件和目标序列的行数匹配
  • 用INDEX提取FILTER结果的第一行,即范围内的第一个星期三
  • 用TO_DATE确保输出结果为日期格式

内容的提问来源于stack exchange,提问作者Marc Witteveen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:45:47