Google Sheets按时间日期组合查询数据问题求助
Google Sheets 查询公式修正方案
原公式问题分析
- 时间比较逻辑易出错:
A <= time'xxx' AND A >= time'xxx'若B1时间早于B2,会直接无匹配结果 - QUERY语句末尾存在冗余空格,可能触发语法报错
- 未做数组化批量适配:原公式用单个单元格引用(A5),无法通过
ArrayFormula自动填充整列
修正后的公式
假设你要在Sheet13的B列(从B2开始),匹配当前行A列的日期,同时以Sheet13的B1(结束时间)、B2(开始时间)为时间范围,查询Sheet12中符合条件的唯一C列数据,修正后的公式如下:
=ArrayFormula(IF(A2:A="",,TRANSPOSE(UNIQUE(QUERY('Sheet 12'!$A$2:$C, "SELECT C WHERE B = date'"&TEXT(A2:A, "yyyy-mm-dd")&"' AND A BETWEEN time'"&TEXT($B$2, "hh:mm:ss")&"' AND time'"&TEXT($B$1, "hh:mm:ss")&"'", 0)))))
核心修改点
- 时间范围逻辑优化:改用
BETWEEN语法替代原有的双重比较,确保无论B1、B2的时间顺序,只要是有效区间就能匹配数据 - 语法规范修正:删除QUERY语句末尾的冗余空格,避免语法解析错误
- 批量适配调整:将单个单元格引用
A5改为数组引用A2:A,搭配IF(A2:A="",,)实现空值判断,让ArrayFormula自动填充整个B列 - 引用固定:对时间范围单元格(B1、B2)使用绝对引用
$B$1、$B$2,防止下拉时引用偏移
内容的提问来源于stack exchange,提问作者Aqilun
相关产品推荐
相关产品推荐

