Google表格:使用QUERY

时间:2018-07-29 17:06:21

标签: google-sheets google-sheets-query

我要报告:“选择最近有N个状态代码= 2,3,4,5的推销员”。

我的数据的一个结构示例包含35行(包括1个标题行): link。 该文件具有日期销售代码(销售人员编号),状态代码(交易成功的编号)和其他字段对此不是必需的。

我最终使用了三个公式:

  1. 带有QUERY的{​​{1}}函数。
    在示例数据中,它稍微简单一些-仅从另一张表中获取销售代码,状态代码和日期,然后按日期,销售代码。 A9中的公式:
    IMPORTRANGE

  2. 带有顺序编号的附加列。 D10中的公式:
    =QUERY({Source!D1:E, Source!A1:A}, $B$4, 1)

  3. QUERY函数仅提取N个案例(假设5)。 F9中的公式:
    =ArrayFormula(if(len(A10:A), ROW(A10:A) - MATCH(A10:A,A10:A,0) - 8, ))

是否有一种方法可以将所有3个步骤组合为一个步骤,这样我就可以使用一个公式(并且希望速度更快:))获得F10:G24所示的输出?我尝试过的公式(为便于阅读而扩展):

=QUERY(A9:D, "select A, B where D <="&B3, 1)

它给了我错误:

  

“函数ARRAY_ROW参数2的行大小不匹配。预计为28。实际为991。”

我还尝试了=QUERY( { QUERY({Source!D1:E, Source!A1:A}, $B$4, 1), ArrayFormula( IF(len(J10:J), ROW(J10:J) - MATCH(J10:J, J10:J, 0) - 8, ) ) }, "select Col1, Col2 where Col4 <="&B3, 1 ) ROW()中的有限数据范围,但是会产生一个空表。 在原始数据库中,大约有3500行,并且它们会扩展,所以我认为我应该坚持无限范围来自动执行数据提取。

1 个答案:

答案 0 :(得分:1)

嗯,这是一个噩梦,TBH –之前曾出现过类似的问题,但没有简单的答案。这是一个草稿,涉及多次重复基本查询-

=ArrayFormula(query({query(A2:E,"select * where E>=2 and E<=5  order by D, A desc"),
row(indirect("2:"&count(filter(E2:E,E2:E>=2,E2:E<=5))+1))-
match(query(A2:E,"select D where E>=2 and E<=5  order by D, A desc"),
query(A2:E,"select D where E>=2 and E<=5  order by D, A desc"),0)
},"select * where Col6<=5"))

但是需要进一步研究,看看它是否可以简化。

这是包含标题的全列版本-我认为还可以

=ArrayFormula(query({query(A:E,"select * where E>=2 and E<=5  order by D, A desc"),
row(indirect("1:"&count(filter(E:E,E:E>=2,E:E<=5))+1))+1-
match(query(A:E,"select D where E>=2 and E<=5  order by D, A desc"),
query(A:E,"select D where E>=2 and E<=5  order by D, A desc"),0)
},"select * where Col6<=5"))

enter image description here