0

我希望有一个人可以帮助我; 我正在构建一些电子表格来帮助进行时间跟踪。我有一个任务列表,其中包含日期、花费时间、工作类别和客户等标准列。

我想按月过滤这些数据,例如,我想知道我在一个月内花了多长时间进行通信。这意味着我需要选择 category = 'correspondence' 以及日期都来自一个指定月份的所有行。目前,我必须使用输出到中间表的查询,然后在该表上运行过滤函数以输出到我的最终表。这是我的两个功能:

=QUERY( 'Task List'!A4:F , "select A, B, E, F where C = 'Correspondence'" )

这给了我第一个表,只有类别为“通信”的行。然后,在那张桌子上,我必须运行下一个函数:

=filter(J4:M,J4:J>=date(2015,4,1),J4:J<=date(2015,4,31))

仅获取四月这个月的行。如果可能的话,我想删除中间表(它没有其他用途,只会弄乱我的工作表)。

是否可以将这些语句组合在一起并一步完成该过程?

谢谢。

4

2 回答 2

1

这确实是可能的。

由于您没有指定要在哪一列中找到日期(在“原始”数据中),因此我假设此示例中的日期位于 col F 中。最简单的方法是使用 MONTH() 函数。但是,当在 query() 中使用时,此函数将 1 月视为 0 月。这就是我添加 +1 的原因。看看这是否有效?

=QUERY( 'Task List'!A4:F , "select A, B, E, F where C = 'Correspondence' and month(F)+1 =4 ")
于 2015-04-11T14:05:16.927 回答
1

我遇到了这个问题,需要通过 weeknum() 和 year() 进行过滤以及通过 contains() 进行查询。结合查询和过滤功能来满足类似但更动态的日期和文本匹配需求会很有帮助。例如,如果 OP 需要按周显示此数据,则在Google Query Language中不可用。

filter 函数没有 contains 函数,因此您仅限于精确匹配文本或使用 Reg-Ex。Query Lanuague 没有 Weeknum 功能。

结合过滤器和查询在与此问题类似但具有动态时间线(没有硬设置的月份或日期,例如滚动时间线)和匹配文本不准确的情况下(当您需要使用查询中的包含函数时)可能很有用语言)。这是在 Google 表格中组合过滤器和查询的示例。

=(sum(Filter(QUERY(FB!$A:$Z, "select Q where B contains 'Apple'"), Weeknum (QUERY(FB!$A:$Z, "select E where B contains 'Apple'")) = Weeknum($A8))))

在此示例中,我查询 Facebook 广告数据导出以查找标题中包含“Apple”一词的任何帖子,并且 Weeknum() 与我的工作表上正在进行的几周相匹配,以便将来自多个来源的每周数据提取到一个表中以进行构建报告,随着时间线的运行,需要最少的更新。

它选择 Q(spend),其中 B(title) 包含 Apple,Weeknum(E) 匹配工作表当前行 (A8) 上的周数。我多次发现这很有用。在此处查询 + 过滤器示例表。

如果 OP 想要随着月份的推移动态提取此信息,如果 A 列包含月份,则公式可以被拉出,并自动从匹配月份过滤的查询数据中提取数据。

=(sum(Filter(QUERY( 'Task List'!A:Z , "select A, B, E, F, J where C contains 'Correspondence'" ), Month(QUERY( 'Task List'!A4:F , "select J where C contains 'Correspondence'" )) = Month('$A2'))))
于 2020-02-18T19:10:07.577 回答