使用数组公式在每一行上输入单行查询

Using array formula to input single row query on every row

Sheet 有问题:https://docs.google.com/spreadsheets/d/1-4ZS3ByIM4DeLhGH0-9_l0rR_vGm9lTb95zMsofJoeE/edit#gid=0

我已经构建了一个查询,我只需要帮助使用数组公式将其应用于所有行而不是将其向下拖动。

我有两个 sheet:一个是 table 的工作 post。另一个是 table 潜在申请人。申请人有描述他们想要获得的工作类型的字段(例如类别、经验水平等),并且工作 post 具有相同类型的字段。

我想根据他们的字段中有多少与工作 post 的字段匹配,为每项工作匹配两个最佳申请人。

我已经想出一个查询 + 数组公式来对申请人进行排名并显示最佳选项,但现在我需要使用一个数组公式,这样我们就可以为每一行获得这个结果,而不是手动将它拖下来,因为我们添加新行。

我想应用于所有行的相关公式在 E2 下的作业 posts sheet 中。

它目前的工作方式是:对于每个职位 post 行,查询创建一个虚拟 table 所有申请人的虚拟列,为他们评分。使用 IF,我为符合工作 post 标准的每一行给他们一个分数。然后查询按他们的分数排序并输出他们的名字和 URL.

然后我在查询中使用“限制 1”,因此它只输出最佳匹配。

对于第二好、第三好等。我使用偏移量 1、2、3 等。

奖励积分,如果你能帮助我转置结果,这样我就可以从一行中的一个查询中获得所有结果,而不是为第二名等设置相同的查询。不过,这不如将其应用于所有行重要。

尝试简单:

=INDEX(REGEXREPLACE(TRIM(QUERY(SPLIT(SPLIT(FLATTEN(QUERY(QUERY(QUERY(SPLIT(
 FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(QUERY(TRIM(SPLIT(FLATTEN(ROW(A2:A)&"♪♥♂♀"&SPLIT(IFNA(
 VLOOKUP(B2:B, SPLIT(FLATTEN(QUERY(QUERY({"♠"&Freelancers!A2:A&"♀"&Freelancers!B2:B, Freelancers!C2:C&"♣"}, 
 "select max(Col1) group by Col1 pivot Col2"),,9^9)), "♣"), 2, )&
 VLOOKUP(C2:C, SPLIT(FLATTEN(QUERY(QUERY({"♠"&Freelancers!A2:A&"♀"&Freelancers!B2:B, Freelancers!D2:D&"♣"}, 
 "select max(Col1) group by Col1 pivot Col2"),,9^9)), "♣"), 2, )&
 VLOOKUP(D2:D, SPLIT(FLATTEN(QUERY(QUERY(IFERROR(SPLIT(FLATTEN(IF(IFERROR(SPLIT(Freelancers!E2:E, ","))="",,
 "♠"&Freelancers!A2:A&"♀"&Freelancers!B2:B&"♦"&SPLIT(Freelancers!E2:E, ",")&"♣")), "♦")), 
 "select max(Col1) group by Col1 pivot Col2"),,9^9)), "♣"), 2, )), "♠")), "♥")), 
 "select Col1,(count(Col2)-100)*-1,Col2 group by Col1,Col2 order by Col1,(count(Col2)-100)*-1 desc"), 
 "where Col3 <> '♂♀'"), "offset 1", )),,9^9)), "♪"), "select max(Col2) group by Col2 pivot Col1"), 
 "offset 1", ),,9^9)), "♫"), "♀"), "select "&JOIN(",", "Col"&SEQUENCE(10)+1))), " \d+ ♂$", ))

demo spreadsheet