使用跨多个条件的复选框过滤

时间:2018-08-01 20:31:38

标签: google-sheets google-sheets-query

我正在尝试创建一个仪表板-其中一个选项卡旨在根据多个条件过滤人员列表。对于“封面”部分,我认为通过复选框表示标准会有所帮助,但是对于我如何从具有不同公式的原始数据选项卡中进行提取没有任何启发。我设想的外观示例如下(示例封面和原始数据):

https://docs.google.com/spreadsheets/d/1RzQ5vJYwpqDClqcPe_U7meRdtFBYL_Gn6b8_yKIP1RU/edit#gid=0

我遇到的主要问题是它涵盖了多个条件,而我正努力提出一个公式来返回数据。因此,在示例表中,我可以检查“苹果”和“蘑菇”,它将从原始数据选项卡中返回满足此条件的人的名字。

我在表格中使用了Google表格公式和查询功能,但是主要发现很难看到这种可能性。

如果有人对此有解决方案,或者以类似的方式认为可以实现相同的目标,那么任何帮助将不胜感激!

谢谢, 山姆

1 个答案:

答案 0 :(得分:0)

我已经使用Data!F2

中的公式更新了您的电子表格
=IFERROR(FILTER(A2:D9, 

IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B$2:$B$9), LEN($A$2:$A$9)), 

IF(Front!$C3 = TRUE, SEARCH(Front!$B3, $B$2:$B$9), LEN($A$2:$A$9)),

IF(Front!$C4 = TRUE, SEARCH(Front!$B4, $B$2:$B$9), LEN($A$2:$A$9)),

IF(Front!$C6 = TRUE, SEARCH(Front!$B6, $C$2:$C$9), LEN($A$2:$A$9)),

IF(Front!$C7 = TRUE, SEARCH(Front!$B7, $C$2:$C$9), LEN($A$2:$A$9)),

IF(Front!$C8 = TRUE, SEARCH(Front!$B8, $C$2:$C$9), LEN($A$2:$A$9)),

IF(Front!$C10 = TRUE, SEARCH(Front!$B10, $D$2:$D$9), LEN($A$2:$A$9)),

IF(Front!$C11 = TRUE, SEARCH(Front!$B11, $D$2:$D$9), LEN($A$2:$A$9))), "No Values Returned in filter. Please try again.")

这应该可以满足您的需求。

更新

有人要求我显示此功能的工作原理。

IFERROR开始,它被包裹在主函数中,因此,如果FILTER不返回任何内容,则不会遇到错误消息。

该函数的大部分内容围绕FILTER构建,而QUERY则是TRUE的代理,而这正是@Sam Breddy最初尝试的。

根据是否经过检查,使用评估为FALSE... IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B$2:$B$9), LEN($A$2:$A$9) ...的复选框,我们可以开始创建动态过滤功能。

仅当Apples中的复选框设置为$B$2:$B$9时,第一个过滤器参数Front!$C2才确定TRUE中是否有FALSE

这里的窍门是当复选框为FALSE时具有有效的值。如果FILTER has mismatched range sizes. Expected row count: 8. column count: 1. Actual row count: 1, column count: 1.参数设置为无/空白,则会弹出错误:

LEN($A$2:$A$9)

为了解决这个问题,我只用SEARCH将第一列的长度返回给函数,这对过滤器没有影响。

有趣的部分是The position at which a string is first found within text and ignores capitalization of letters. Returns #VALUE! if the string is not found.,它返回:

Apple

搜索会找到您要查找的字符串...在这种情况下为FILTER,然后将该字符串的位置传递回TRUE,从而只显示其结果为{ {1}}。

例如SEARCH(Front!$B2, $B$2:$B$9)将返回1

通过对我们的SEARCH函数的每个后续参数使用FILTER方法,它们可以充当OR的角色,从而允许该函数评估APPLES或{{1} }。

老实说,我在这个问题上a了一口气,最终脱颖而出。我认为这不适用于同一列中具有相同首字母

的项目

例如如果您要在同一列中查找ORANGESApples ...

我还确定对具有相同值的两列进行这种动态过滤可能会遇到一些问题,但是此解决方案应符合您的需求。

干杯