跨多个条件使用复选框进行过滤
Filtering With Checkboxes Across Multiple Criteria
我正在尝试创建一个仪表板 - 其中一个选项卡旨在根据多个条件过滤人员列表。对于其中的 "front cover" 部分,我认为通过复选框表示标准会有所帮助,但对于如何从具有不同公式的原始数据选项卡中进行提取,我没有任何灵感。我设想的示例如下(示例封面和原始数据):
https://docs.google.com/spreadsheets/d/1RzQ5vJYwpqDClqcPe_U7meRdtFBYL_Gn6b8_yKIP1RU/edit#gid=0
我遇到的主要问题是它涵盖了多个标准,我正在努力想出一个公式来 return 数据。因此,在示例 sheet 中,我可以检查 "apples" 和 "mushrooms",它将 return 来自原始数据选项卡的满足此条件的人名。
我在 sheet 中使用了 google sheet 的公式和查询函数,但主要是发现很难看出这是如何实现的。
如果有人对此有解决方案,或者他们认为可以实现相同目标的类似方法,我们将不胜感激!
谢谢,
山姆
我已经用 Data!F2
中的公式更新了你的电子表格
=IFERROR(FILTER(A2:D9,
IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B:$B), LEN($A:$A)),
IF(Front!$C3 = TRUE, SEARCH(Front!$B3, $B:$B), LEN($A:$A)),
IF(Front!$C4 = TRUE, SEARCH(Front!$B4, $B:$B), LEN($A:$A)),
IF(Front!$C6 = TRUE, SEARCH(Front!$B6, $C:$C), LEN($A:$A)),
IF(Front!$C7 = TRUE, SEARCH(Front!$B7, $C:$C), LEN($A:$A)),
IF(Front!$C8 = TRUE, SEARCH(Front!$B8, $C:$C), LEN($A:$A)),
IF(Front!$C10 = TRUE, SEARCH(Front!$B10, $D:$D), LEN($A:$A)),
IF(Front!$C11 = TRUE, SEARCH(Front!$B11, $D:$D), LEN($A:$A))), "No Values Returned in filter. Please try again.")
这应该能满足您的需求。
更新
有人要求我展示此功能的工作原理。
从 IFERROR
开始,这是围绕主函数的,因此如果 FILTER
return 什么都没有,用户不会收到错误消息。
大部分功能是围绕 FILTER
构建的,它充当 QUERY
的代理,这是@Sam Breddy 最初尝试的。
使用评估为 TRUE
或 FALSE
的复选框,具体取决于它们是否已被选中,我们可以开始创建我们的动态过滤功能。
只有当 Front!$C2
中的复选框设置为 TRUE
时,第一个过滤器参数 ... IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B:$B), LEN($A:$A) ...
才确定 $B:$B
中是否有任何 Apples
。
这里的技巧是当复选框为 FALSE
时具有有效值。如果 FALSE
参数设置为无/空白,则会弹出错误:
FILTER has mismatched range sizes. Expected row count: 8. column count: 1. Actual row count: 1, column count: 1.
为了解决这个问题,我只是 return 将第一列的长度返回给带有 LEN($A:$A)
的函数,这对过滤器没有影响。
有趣的部分是 SEARCH
其中 returns:
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
。
例如SEARCH(Front!$B2, $B:$B)
将 return 1
通过为我们的 FILTER
函数的每个后续参数使用 SEARCH
方法,它们充当 OR
允许函数计算 APPLES
或 ORANGES
.
老实说,我试了一下这个问题,最后名列前茅。我认为它不适用于同一列中首字母相同的项目
例如如果您在同一列中查找 Apples
和 Andy's
...
我也确信对具有相同值的两列进行这种动态过滤可能会出现一些问题,但此解决方案应该符合您的需要。
干杯,
我正在尝试创建一个仪表板 - 其中一个选项卡旨在根据多个条件过滤人员列表。对于其中的 "front cover" 部分,我认为通过复选框表示标准会有所帮助,但对于如何从具有不同公式的原始数据选项卡中进行提取,我没有任何灵感。我设想的示例如下(示例封面和原始数据):
https://docs.google.com/spreadsheets/d/1RzQ5vJYwpqDClqcPe_U7meRdtFBYL_Gn6b8_yKIP1RU/edit#gid=0
我遇到的主要问题是它涵盖了多个标准,我正在努力想出一个公式来 return 数据。因此,在示例 sheet 中,我可以检查 "apples" 和 "mushrooms",它将 return 来自原始数据选项卡的满足此条件的人名。
我在 sheet 中使用了 google sheet 的公式和查询函数,但主要是发现很难看出这是如何实现的。
如果有人对此有解决方案,或者他们认为可以实现相同目标的类似方法,我们将不胜感激!
谢谢, 山姆
我已经用 Data!F2
=IFERROR(FILTER(A2:D9,
IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B:$B), LEN($A:$A)),
IF(Front!$C3 = TRUE, SEARCH(Front!$B3, $B:$B), LEN($A:$A)),
IF(Front!$C4 = TRUE, SEARCH(Front!$B4, $B:$B), LEN($A:$A)),
IF(Front!$C6 = TRUE, SEARCH(Front!$B6, $C:$C), LEN($A:$A)),
IF(Front!$C7 = TRUE, SEARCH(Front!$B7, $C:$C), LEN($A:$A)),
IF(Front!$C8 = TRUE, SEARCH(Front!$B8, $C:$C), LEN($A:$A)),
IF(Front!$C10 = TRUE, SEARCH(Front!$B10, $D:$D), LEN($A:$A)),
IF(Front!$C11 = TRUE, SEARCH(Front!$B11, $D:$D), LEN($A:$A))), "No Values Returned in filter. Please try again.")
这应该能满足您的需求。
更新
有人要求我展示此功能的工作原理。
从 IFERROR
开始,这是围绕主函数的,因此如果 FILTER
return 什么都没有,用户不会收到错误消息。
大部分功能是围绕 FILTER
构建的,它充当 QUERY
的代理,这是@Sam Breddy 最初尝试的。
使用评估为 TRUE
或 FALSE
的复选框,具体取决于它们是否已被选中,我们可以开始创建我们的动态过滤功能。
只有当 Front!$C2
中的复选框设置为 TRUE
时,第一个过滤器参数 ... IF(Front!$C2 = TRUE, SEARCH(Front!$B2, $B:$B), LEN($A:$A) ...
才确定 $B:$B
中是否有任何 Apples
。
这里的技巧是当复选框为 FALSE
时具有有效值。如果 FALSE
参数设置为无/空白,则会弹出错误:
FILTER has mismatched range sizes. Expected row count: 8. column count: 1. Actual row count: 1, column count: 1.
为了解决这个问题,我只是 return 将第一列的长度返回给带有 LEN($A:$A)
的函数,这对过滤器没有影响。
有趣的部分是 SEARCH
其中 returns:
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
。
例如SEARCH(Front!$B2, $B:$B)
将 return 1
通过为我们的 FILTER
函数的每个后续参数使用 SEARCH
方法,它们充当 OR
允许函数计算 APPLES
或 ORANGES
.
老实说,我试了一下这个问题,最后名列前茅。我认为它不适用于同一列中首字母相同的项目
例如如果您在同一列中查找 Apples
和 Andy's
...
我也确信对具有相同值的两列进行这种动态过滤可能会出现一些问题,但此解决方案应该符合您的需要。
干杯,