首页 > 解决方案 > 如何在 Google 电子表格中使用数组作为 FILTER 函数的输入?

问题描述

所以这可能是微不足道的,但很难问。我想要FILTER一个基于其他FILTER结果的范围。

我将尝试从内到外解释(与下图相关):

换句话说:为给定的所有s找到最大值。valuenameid

这是我的想法:

=MAX(FILTER(J:J, CONTAINS???(FILTER(G:G, F:F = A2), I:I)))
                 ^--- imaginary function returning TRUE for every value in I 
                      that is contained in the array

=MAX(FILTER(J:J, I:I = FILTER(G:G, F:F = A2)))
                     ^--- equal does not work here when filter returns more than 1 value

=MAX(FILTER(J:J, REGEXMATCH(JOIN(",", FILTER(G:G, F:F = A2)), I:I)))
                 ^--- this approach WORKS but is ineffective and slow on 10k+ cells

在此处输入图像描述 https://docs.google.com/spreadsheets/d/1k5lOUYMLebkmU7X2SLmzWGiDAVR3u3CSAF3dYZ_VnKE

我希望找到比/组合更好CONTAINS的功能,或者使用其他方法来完成任务。REGEXMATCHJOIN

标签: arrayssortinggoogle-sheetsgoogle-sheets-formulagoogle-sheets-query

解决方案


在A2单元格中尝试此操作(删除A2:C范围内的所有内容后):

=SORTN(SORT({INDIRECT("F2:F"&COUNTA(F2:F)+1), 
 TRANSPOSE(SUBSTITUTE(TRIM(QUERY(QUERY(QUERY({F2:G}, 
 "select max(Col2) group by Col2 pivot Col1"), "offset 1"),,999^99)), " ", ",")), 
 VLOOKUP(INDIRECT("G2:G"&COUNTA(F2:F)+1), I2:J, 2, 0)}, 1, 1, 3, 0), 999^99, 2, 1, 1)

0


推荐阅读