Google Sheets两列使用FILTER筛选:其中一列为日期时失效怎么解决?
问题描述
我有两列数据,一列存储A、B、C类字母,另一列存储1、2、3类数值。如果我需要筛选出对应数值小于3的字母,使用公式=filter(O39:O41,P39:P41<3)可正常运行。
当我将第二列数据替换为日期类型后,筛选功能失效,运行=filter(O39:O41,P39:P41<1/3)时,系统返回报错No matches are found in FILTER evaluation.
请问该问题的产生原因是什么,应如何解决?
问题原因
Excel、Google Sheets等表格工具中的日期本质是数值型序列值:整数代表从基准日(Excel为1900年1月1日,Google Sheets为1899年12月30日)开始累计的天数,小数代表当日的时间占比。你在公式里直接写1/3会被默认解析为除法运算,得到的数值约为0.333,对应的是基准日当天的8点,属于非常早的时间点。
如果第二列存储的是正常晚于基准日的日期,对应的序列值都会远大于0.333,自然没有符合筛选条件的结果,触发报错。
解决方法
根据实际筛选需求,选择对应方案调整公式即可:
- 需求1:筛选日期早于1月3日(对应你写的1/3的日期语义)
需明确写出完整日期,避免公式解析为除法,两种写法均可:- 用
DATE函数指定日期,兼容性最高:=filter(O39:O41,P39:P41<DATE(2024,1,3)),按需修改年、月、日参数即可 - 用引号包裹日期字符串:
=filter(O39:O41,P39:P41<"2024/1/3")
- 用
- 需求2:筛选日期中的时间部分早于8点(对应1/3天的时间语义)
需要先提取出日期的时间部分再比较,用MOD函数取序列值除以1的余数即可得到纯时间数值:=filter(O39:O41,MOD(P39:P41,1)<1/3)
内容的提问来源于stack exchange,提问作者James Raitsev
相关产品推荐
相关产品推荐

