在我最近提出的另一个问题中,我展示了如何使用 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?”字段拖到“列标签”区域。我将“动物类型”字段拖到“值”区域。
这将为您提供按类型和饲养状态统计的动物数量,以及行和列总数。这些可以回答您尝试回答的所有问题,而无需编写任何公式,其结构可以轻松扩展以包含其他列和值。