Excel计算逻辑语句的组合

时间:2016-10-28 13:20:28

标签: excel

我有一个包含多个类别数据的电子表格,例如宠物(狗,猫,兔),性别(M,F),运输方式(汽车,自行车,滑板)。对于每个人,这些可以是真的也可以是假的。我想要计算具有宠物,性别,交通方式的特定组合的个人数量。我希望这是自动的,所以我可以指定性别,宠物,单元格中的传输模式以及基于这些值的公式计数。

e.g。有多少人是男性,有一只狗,还有一辆自行车?在这种情况下,需要从电子表格中的单元格中读取Male,Dog和Bike。

我有一个公式,它使用间接和偏移来选择列但不禁认为必须有更好的方法。

这是一个例子,它比我上面的罗嗦解释更加清晰。在此先感谢您的帮助。

有没有办法表示我的数据更适合使这种计数更容易?

Google Drive Link to Excel file

非常有效 - 我不从互联网评论中下载随机文件:

这是一个csv:

Name,Dog,Cat,Rabbit,Male,Female,Car,Bike,Skateboard
Alice,TRUE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE,FALSE
Bob,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE,FALSE
Chris,FALSE,FALSE,TRUE,FALSE,TRUE,TRUE,FALSE,FALSE
Dave,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,TRUE
Ellie,TRUE,FALSE,TRUE,FALSE,TRUE,TRUE,TRUE,TRUE
Frank,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE
Gerald,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE

我使用的公式也是:

  

= COUNTIFS(OFFSET(INDIRECT(“R3C”& MATCH(L3,Headings,0),FALSE),0,0,numberOfPeople,1),TRUE,   OFFSET(INDIRECT( “R3C” &安培; MATCH(M3,标题,0),FALSE),0,0,numberOfPeople,1),TRUE,   OFFSET(INDIRECT( “R3C” &安培; MATCH(N3,标题,0),FALSE),0,0,numberOfPeople,1),TRUE)

其中numberOfPeople是对计数条目数的单元格的引用。标题是对表格列标题的引用。

2 个答案:

答案 0 :(得分:0)

如果您将COUNTIFS公式与多个IF语句结合使用,则非常容易。这是应该工作的(放入" O3"并复制下来):

=COUNTIFS(IF($L3=F$2,$F$3:$F$9,$G$3:$G$9),TRUE,IF($M3=C$2,$C$3:$C$9,IF($M3=D$2,$D$3:$D$9,$E$3:$E$9)),TRUE,IF($N3=H$2,$H$3:$H$9,IF($N3=I$2,$I$3:$I$9,$J$3:$J$9)),TRUE)

这会比较内部IF语句中类别的给定值,并返回相应的列以检查TRUECOUNTIFS的作用是计算所有给定标准的标准为TRUE的所有行。您还可以通过添加更多内部IF语句来扩展类别,以返回相应的行。

由于您可以为一行提供多个值,因此更改数据表示并不容易。您必须将具有多个值的数据拆分为多行。这是一个例子:

Example

然后您可以使用以下公式:

=COUNTIFS($D$3:$D$14,$L3,$C$3:$C$14,$M3,$E$3:$E$14,$N3)

在" L3"中给予性别,给予" M3"中的宠物,给予运输" N3"。

如果您还有其他问题,请发表评论。

答案 1 :(得分:0)

OFFSET和INDIRECT是易失性函数,因为无论基础数据是否发生变化,每次excel计算时都会重新计算。

我更喜欢使用INDEX来返回范围。

INDEX有3个标准。 INDEX(范围,行,列)。通过在行标准中添加0,它将返回完整列。

所以使用MATCH找到正确的列,0用于行,我们得到正确的列返回。

=COUNTIFS(INDEX(A:I,0,MATCH($K$2,1:1,0)),TRUE,INDEX(A:I,0,MATCH($K$3,1:1,0)),TRUE,INDEX(A:I,0,MATCH($K$4,1:1,0)),TRUE)

enter image description here