【发布时间】:2018-07-29 17:06:20
【问题描述】:
我想做一个报告:“select salesmen who has N recent Status codes = 2,3,4,5”。
我的数据结构示例有 35 行(包括 1 个标题行): link。 该文件包含日期、销售代码(销售员的id)、状态码(交易成功程度的id)和其他字段这对于目的来说不是必需的。
我最终使用了三个公式:
QUERY函数和IMPORTRANGE。
在示例数据中,它稍微简单一些 - 仅从另一个工作表中获取销售代码、状态代码和日期,然后按日期、销售代码排序。 A9 中的公式:=QUERY({Source!D1:E, Source!A1:A}, $B$4, 1)带有连续编号的附加列。 D10 中的公式:
=ArrayFormula(if(len(A10:A), ROW(A10:A) - MATCH(A10:A,A10:A,0) - 8, ))一个 QUERY 函数仅提取 N 个案例(比如说 5 个)。 F9 中的公式:
=QUERY(A9:D, "select A, B where D <="&B3, 1)
有没有一种方法可以将所有 3 个步骤合二为一,这样我就可以使用一个(希望是快速 :))公式获得 F10:G24 中的输出?我试过的公式(为了可读性而扩展):
=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
)
它给了我错误:
“函数 ARRAY_ROW 参数 2 的行大小不匹配。预期:28。实际:991。”
我还尝试了ROW() 和MATCH() 中的有限数据范围,但这会产生一个空表。
在原始数据库中大约有 3500 行并且它们会扩展,所以我认为我应该坚持无限范围来自动提取数据。
【问题讨论】:
-
我们可以假设原始数据是按销售代码排序的,即某个特定推销员的所有销售都在一起吗?
-
@TomSharpe,在原始数据中,每天都会添加所有销售额,并在数据库顶部输入最新信息。未应用排序。所以在任何一天,都可以有任何销售状态的推销员。
-
我认为这是可行的,但必须重复排序 - 稍后会发布一些内容。
标签: google-sheets google-sheets-query