如何停止 Filter 保留源数据的顺序?

How do I stop Filter retaining the order of source data?

我想知道如何在 Google 工作表中获取 FILTER 函数,以根据其条件匹配的数据对自身进行排序。

My example sheet is here.

在我的示例中,我在两个 sheet 中有两组数据,名为“DS”和“SALESPIPELINE”。 DS 包含工作室和日期列表,SALESPIPELINE 还包含工作室和日期列表以及销售数据,例如潜在客户、潜在客户、资格预审、咨询等。

我想将 SALESPIPELINE 中的信息导入 DS,但已正确排序以匹配 DS 中的工作室和日期列。我尝试了很多公式,但目前我使用的公式是:

=FILTER(SALESPIPELINE!C2:I, MATCH(SALESPIPELINE!A2:A1000, A2:A, 0), MATCH(MONTH(SALESPIPELINE!B2:B), MONTH(B2:B), 0), MATCH(YEAR(SALESPIPELINE!B2:B), YEAR(B2:B), 0))

筛选后的数据是正确的数据,但它保留了数据在 SALESPIPELINE 中的顺序,而不是与 DS 中的列匹配。我试过将 FILTER 包装在 SORT 函数中并按 SALESPIPELINE!A3:A14 排序,但它似乎没有按顺序排序(这对我来说也不是解决方案,因为排序范围需要随着数据的增加而动态变化已添加)。

我已经包含了一个 sheet 来展示理想的结果。如您所见,我希望它采用 DS 中工作室和日期的顺序以及来自 SALESPIPELINE 的匹配数据。

FILTER 是否是要使用的正确公式,还是像 QUERY 这样的公式更合适? (我确实尝试过 QUERY,但也无法正常工作)

希望这是有道理的 - 我希望得到一些帮助来解决这个问题!

尝试:

=INDEX(IFNA(VLOOKUP(A3:A, 
 FILTER({SALESPIPELINE!A2:A, SALESPIPELINE!C2:I}, 
 MATCH(SALESPIPELINE!A2:A1000, A3:A, 0), MATCH(MONTH(SALESPIPELINE!B2:B), MONTH(B3:B), 0), 
 MATCH(YEAR(SALESPIPELINE!B2:B), YEAR(B3:B), 0)), {2,3,4,5,6,7,8}, 0)))

试试这个(你可以放在另一个标签中)

=sort(filter({arrayformula(if(iserror(match(SALESPIPELINE!A:A,DS!A:A,0)&"~"&match(SALESPIPELINE!B:B,DS!B:B,0)),9^9,match(SALESPIPELINE!A:A,DS!A:A,0))),SALESPIPELINE!A:I},match(SALESPIPELINE!A:A,DS!A:A,0),match(SALESPIPELINE!B:B,DS!B:B,0)))