我正在努力将工作表 1 的副本复制到另一个 sheet2(同一文档(上,并且 query(( 工作正常,直到我要过滤的列是公式单元格(LONG 每个都有查询、匹配等(。
我想做的是过滤 sheet1 中 M 列中的事件日期即将到来的行(有更多的过滤条件,但只是为了简化这是主要问题(。
我不想要日期为空、过去(各种日期格式(或公式给出空字符串 " 结果的行。
我尝试过的公式(给出错误( - 请注意,我只选择 2 列进行测试:
=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND DATEVALUE(M)>TODAY() ",0)
=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND M>TODAY() ",0)
此公式不会给出错误,但不显示正确的数据 - 显示除 2017 年 1 月 - 2017 年 8 月 7 日之外的所有数据:
=FILTER(sheet1!A3:N, sheet1!I3:I="Singapore", sheet1!M3:M>TODAY())
此公式给出空输出:
=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND M='22 August' ",0)
查询中没有 today((。请改用now()
:
=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND M > now() ",0)
或者,如果您想在没有time
的情况下now()
(相当于TODAY()
(,请使用:
todate(now())
为此,前提是您拥有 Google 表格识别的任何格式的 M 格式的所有正确日期(即,编辑栏显示正确的日期或时间(,而不管实际字符串如何。如果没有,您应该手动将所有剩余日期转换为正确的格式。要在查询公式中输入的正确日期格式是date 'yyyy-mm-dd'
。日期在表格中的格式并不重要(只要Google表格识别这一点(,但实际公式必须仅包含这种格式的日期以进行比较。例如,要查找小于 2017 年 8 月 31 日的所有日期,
=query(A2:B6, "select A where A < date '2017-08-31'")
您可以使用它来计算所有日期,Google无法识别:N1:
M:M*1
如果在帮助程序列 N 中出现错误,则无法识别这些日期。即使您没有收到错误,Google 表格也可能错误地识别了日期。还有一个更具体的功能:
=ARRAYFORMULA(ISDATE(M:M))
引用:
- 标量函数