Excel 中是否存在可以让人过滤如下例所示的表格集的公式?
该公式需要是一个 OR 函数,所以当我查看打篮球的参与者时,它不会删除像 Daniel Ollo 那样打其他运动(不包括篮球)的参与者。
1 = Participant Plays Sport; 0 = Participant Does Not Play Sport
Basketball Soccer Tennis Baseball Hockey Running
John Doe 1 0 1 1 0 0
Kelly Anne 1 0 0 0 1 1
Daniel Ollo 0 0 0 0 0 1
Luis Packer 1 0 0 1 1 0
当搜索某项特定运动(例如篮球、曲棍球和跑步)时,Excel 表将显示如下内容:
Basketball
John Doe
Kelly Anne
Luis Packer
Hockey
Kelly Anne
Luis Packer
Running
Daniel Ollo
Kelly Anne
答案1
或者函数不足以找到名称,这是另一种方法:
首先为每项运动定义名称:
选择篮球列下的所有数字(不带标题),然后单击公式栏左上方(引用的位置)并将篮球写入与标题相同
对每一列重复相同的
操作为所有定义名称:足球、网球、棒球... 为名称列命名
在 A8 中写下您要搜索的运动,例如篮球,
在 A9 中写下以下数组公式,并将其向下拖动以覆盖与初始数据相同的行数
=IFERROR(INDEX(Name,SMALL(IF(INDIRECT($A$8)=1,ROW(INDIRECT($A$8))-1,""),ROW()-8)),"")
按Ctrl+Shift+Enter
。
姓名是从第一个名称开始直到最后一个 Indirect($A$8) 的所有名称列的定义名称,
是对应数字的数字数组
8 是您写下运动项目的行号,例如篮球
每当您更改运动项目的名称时,参与者的名称最终都会改变
答案2
这里有一个不错的模板供您使用。使用 MATCH 和 OFFSET 函数非常适合您的情况。
MATCH 函数返回条件的第一次出现并返回行号。=MATCH(lookup_value, lookup_array, [match_type])
OFFSET 函数允许您选择一个数组,然后使用公式从中移动。
我没有返回人员姓名,而是返回了他们姓名所在的行。我觉得这将有助于向您展示如何做得更好。当然,一旦您有了行号,您就可以添加另一个匹配项来获取姓名。
第一个公式与上文类似,仅使用 MATCH 函数。这里非常简单地说明了如何找到第一个匹配项。
第一个单元格下方的单元格应与上图类似。这看起来就像第一个单元格使用 MATCH 函数时一样,但会根据上一次搜索找到的行进行偏移。如果未找到任何内容,则 IFERROR 只是用来显示空白。我将美元符号放在行上,因为您根本不希望这些行进行调整。但是列可以,因此您只需将公式拖到右侧,一切就会正常。
希望这能帮助您了解如何使用 MATCH 和 OFFSET。