我可以使用 Excel Match 函数匹配多种类型的值吗

我可以使用 Excel Match 函数匹配多种类型的值吗

在我最近提出的另一个问题中,我展示了如何使用 Excel Match 函数查询我的数据以生成摘要类型表:

创建一个公式,根据 Microsoft Excel 中 A 列的选择查询 B 列中的数据

我得到了非常有帮助的这个公式,它非常有效:

=IF(ISERROR(MATCH($A$1:$A$2&"未喂食", 动物!A$2:A$7&动物!B$2:B$7, 0)), "所有动物喂食", "所有动物未喂食")

我现在想看看是否有办法将此公式扩展为在包含多种类型的值(可能最多 3 或 4 个不同值)的列上进行匹配。

例如:

在此处输入图片描述

根据以上内容,我希望看到的输出是

在此处输入图片描述

我尝试过类似的事情:

=IF(ISERROR(MATCH($A$1:$A$2&(OR("Fed","Partly Fed","Somewhat Fed")) Animals!A$2:A$7&Animals!B$2:B$7, 0)), "所有动物均已喂养", "所有动物均未喂养")

... 但这并不奏效,而且从逻辑上讲,根据我希望它如何表现,这可能甚至不是正确的路线!本质上,只要给定 AnimalType 的范围 B1:B7 只包含允许的值(无论数量/组合如何),我希望函数返回 true。

答案1

你想做的是交叉制表(又名交叉表)。在 Excel 中执行此操作的工具称为数据透视表

不幸的是,数据透视表与定性数据不兼容,因此为了使其正常工作,您需要添加一列,以数值形式表示您的喂养/未喂养数据。

例如,如果您使用,=IF(B2="Not Fed",1,0)您将得到一列,其中如果任何动物“未喂食”,您将得到一个。(请注意,您没有指定如果字段Fed?为空或具有其他令人惊讶的值时您希望发生什么。您还没有说在这种情况下您希望发生什么"birds" -> {"not fed", "partially fed", "fed"}。您使用的精确 IF 语句取决于您对这些问题的回答。)

然后选择包含所有三列的整个范围(或将新列放在这两列之间,然后仅选择动物和计算列,然后从数据菜单中选择“数据透视表报告”。

向导将引导您完成一系列对话框。在第一个对话框中,您的数据位于“Microsoft Excel 列表或数据库”中。在第二个对话框中,如果您在启动向导之前选择了数据,则它应该会正确默认为您的数据范围。

在第三个对话框中,不要Finish立即点击。您需要设置许多选项。首先,在该对话框中,您可以选择将新数据透视表放在何处。我建议将数据透视表放在新工作表上。接下来,单击“布局...”。将“动物”框拖到左列(“行”)。将新列的标题拖到中间的“数据”区域;当您这样做时,它将显示为“字段名称的总和”。双击它,将名称更改为“是否有任何动物未喂食?”之类的内容,并将摘要类型更改为“最大”,然后单击“确定”,然后再次单击“确定”以完成布局对话框。您仍然处于向导对话框的第 3 步。单击“选项...”。取消选中“列总计”并确保“行总计”已打开。打开“显示错误值”(对此非常重要)并将其设置为 0,然后单击“确定”。然后,最后,您可以点击“完成”向导。

你应该得到一张新的表格,上面写着:

Are any animals unfed?  
Animals Total
Cat     0
Dog     1

现在,您可以输入紧接着的列,=IF(B3=1, "Some Animals Not Fed", "All Animals Fed")依此类推,如果某一类型的任何一种动物是“未喂食”,则会显示“某些动物未喂食”,否则为“所有动物都喂食”)。您现在可以隐藏 B 列,只看到:

Are any animals unfed?  
Animals 
Cat     All Animals Fed
Dog     Some Animals Not Fed

答案2

我将根据范围创建一个数据透视表(插入功能区)。我将“动物类型”字段拖到“行标签”区域,将“Fed?”字段拖到“列标签”区域。我将“动物类型”字段拖到“值”区域。

这将为您提供按类型和饲养状态统计的动物数量,以及行和列总数。这些可以回答您尝试回答的所有问题,而无需编写任何公式,其结构可以轻松扩展以包含其他列和值。

数据透视表示例

相关内容