4

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

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

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

我尝试过的公式(给出错误) - 请注意我只是选择 2 列进行测试:

=query(sheet1!A3:N, "选择 I,M where I = 'Singapore' AND DATEVALUE(M)>TODAY()",0)

=query(sheet1!A3:N, "选择 I,M where I = 'Singapore' AND M>TODAY()",0)

这个公式没有给出错误但没有显示正确的数据 - 显示除 2017 年 1 月 - 2017 年 8 月 7 日以外的所有数据:

=FILTER(sheet1!A3:N, sheet1!I3:I="新加坡", sheet1!M3:M>TODAY())

此公式给出空输出:

=query(sheet1!A3:N," 选择 I,M 其中 I = '新加坡' AND M='22 August' ",0)

我是谷歌表格和应用程序脚本的新手,所以感谢任何人的任何建议谢谢!

4

1 回答 1

4

Query 中没有 today() 。

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

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

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

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

N:N = M:M*1

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

=ARRAYFORMULA(ISDATE(M:M))
于 2017-08-20T14:48:41.033 回答