【发布时间】:2018-01-28 15:38:33
【问题描述】:
我正在将 sheet1 的副本复制到另一个 sheet2(同一个文档)上,并且 query() 工作正常,直到我要过滤的列是公式单元格(长的每个都有查询、匹配等)。
我想要做的是过滤 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)
我是谷歌表格和应用程序脚本的新手,因此感谢任何人的任何建议 谢谢!!
【问题讨论】:
-
“各种日期格式”让我担心让它工作的可能性......它们是日期还是有时只是字符串?您可以通过单击它来检查它,如果弹出日历则它是一个日期,否则它不是并且没有公式能够得到它......
-
@Sergeinsas 哦,我明白了,它们是字符串。有些是自行输入的,看起来像“23 August”,在公式栏上查看时会自动格式化为 23/08/2017。其他是通过看起来像“2017 年 7 月 22 日星期六”的表单生成的,但公式栏显示“22/07/2017 13:00:00”。
-
@Sergeinsas 对不起,双重评论,但你的意思是没有办法过滤日期字符串?我可以以某种方式将它们更改为日期吗
-
字符串和日期在公式中的处理方式完全不同(在 JavaScript 中也是如此),从各种字符串格式转换为日期从来都不是一件容易的事(至少当它需要完全万无一失时;)) .首先要做的是执行转换,在这个论坛上搜索 JavaScript 标签可能吗? stackoverflow.com/…
-
@Sergeinsas 好的,感谢您的提醒! :) 因此,当我确实将它们按日期排序时,我可以说我可以使用 today() 与列 M 进行比较吗?
标签: google-apps-script google-sheets google-sheets-query