在 google 个工作表上查询和比较日期

Query and compare date on google sheets

我正在将 sheet1 的副本复制到另一个 sheet2(同一文档),并且 query() 工作正常,直到我要过滤的列是公式单元格(每个长单元格都有查询、匹配等).

我想做的是过滤 sheet1 中 M 列中的事件日期即将到来的行(过滤条件更多,但只是为了简化这是主要问题)。

我不想要日期为空、过去(各种日期格式)或公式给出空字符串“”结果的行。

我试过的公式(给出错误)- 注意我只是 selecting 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)

我是 google 表格和应用程序脚本的新手,非常感谢任何人的建议 谢谢!!

查询中没有 today()。

=query(sheet1!A3:N, " select I,M where I = 'Singapore' AND M > now() ",0)

这在理论上应该可行,前提是您拥有任何格式的 M 中的所有正确日期,Google 工作表可以识别(即公式栏显示正确的日期或时间),而不管实际字符串如何。如果不是,您应该手动将所有剩余日期转换为正确的格式。查询公式中输入日期的正确格式为date 'yyyy-mm-dd'。工作表中日期的格式无关紧要(只要 Google 工作表识别这一点),但实际公式必须仅包含此格式的日期以进行比较。例如,查找所有小于 31,August, 2017,

的日期
=query(A2:B6, "select A where A < date '2017-08-31'")

您可以使用它来计算所有 Google 无法识别的日期:

N:N = M:M*1

如果您在辅助列 N 中遇到错误,则无法识别这些日期。即使您没有收到错误,Google 工作表也可能错误识别日期。还有一个更具体的功能:

=ARRAYFORMULA(ISDATE(M:M))