用两个条件计数(Microsoft Excel)
约翰有一个工作表,其中包含成本跟踪系统中使用的记录。在A列中输入记录号,在B列中输入位置,在C列中输入成本。并非所有记录在C列中都输入了成本值。John希望确定“位置X并且成本<> 0”的记录数。
您的第一个冲动可能是使用设计用于计数的工作表函数之一,例如CountIf。唯一的问题是CountIf不允许在计算解决方案时检查两个条件。但是,可以使用两种解决方案,而无需添加其他列或中间计算。
第一个(也许是最简单的)解决方案是使用SUMPRODUCT工作表功能。此功能使您可以根据需要使用多个条件来对列,行或数组中的数据进行计数或求和。基本语法如下:
=SUMPRODUCT( (CONDITION1) (CONDITION2) (CONDITION3) * (DATACELLS) )
在这种特殊情况下,您可以像这样将公式放在一起:
=SUMPRODUCT((B2:B101="X")*(C2:C101>0))
这是提供两个不同的条件进行检查。
首先,检查B列中的单元格以查看它们是否等于“ X”,然后检查C列中的相应单元格以查看它们是否等于0。这两个条件都返回True(1)或False(0)。然后,将这些结果彼此相乘,得出1或0。然后,SUMPRODUCT函数将它们相加,得出累加计数。
另一个解决方案是创建一个数组公式,该公式将为您进行计算。数组公式与常规公式不同,它们在多个单元格上工作,并遍历它们以产生结果。请考虑以下公式:
=(B2="X")*(C2>0)
这将返回一个值为1或0的值。该公式使用与SUMPRODUCT解决方案的先前解释中所述的相同基本逻辑。这两个逻辑比较返回1或0,它们相互相乘,得出1或0作为答案。现在,考虑以下公式:
=SUM((B2:B101="X")*(C2:C101>0))
现在看起来非常像早期的SUMPRODUCT公式,但是它不能作为纯公式正常使用。这是因为SUM并非旨在以迭代方式在一系列单元格上工作。如果将此公式作为数组公式输入(按Shift + Ctrl + Enter进行输入),则Excel会理解您要遍历每个范围,以得出最终的总和,即得出的总记录数符合规定的标准。
使用数组公式的不同方法是一个广泛的话题。
有关数组公式如何工作的更多信息,请参见_WordTips,_的其他问题或参考以下网站:
http://www.cpearson.com/excel/ArrayFormulas.aspx
第三种选择是使用数据库工作表函数返回计数。使用这些,您可以在工作表中设置一个“条件表”,然后该函数使用条件来分析记录。以下步骤假定三列的列标签分别为RecNum,Location和Cost:
。在与记录相同的工作表上或在不同的工作表上找到一些空单元格。 (为了这个示例,我假设您使用的是列J和K。)
。在单元格J1中,输入单词Location。
。在单元格K1中,输入费用一词。
。在单元格J2中,输入X。 。在单元格K2中,输入> 0。现在,您已经在单元格J1:K2中输入了标准表。
。选择单元格J1:K2。
。从“插入”菜单中选择“名称”,然后选择“定义”。 Excel将显示“定义名称”对话框。 (请参见图1。)
。输入名称条件,然后单击确定。
。在要满足条件的记录数的单元格中,输入以下内容:
=DCOUNT(B1:C101,2,Criteria)
请注意,与DCOUNT一起使用的第一个参数是记录列表的第二和第三列。此参数还包括列标签,这是必需的,以便DCOUNT可以从条件表中找到适当的条件匹配项(第三个参数)。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2815)适用于Microsoft Excel 97、2000、2002和2003。