有没有更好的方法来统计 Excel 中两列满足条件的记录数?

有没有更好的方法来统计 Excel 中两列满足条件的记录数?

抱歉,这个问题措辞不当,我不知道该如何用语言表达。我想统计数据库中未成年人和非法购买行为的记录数量。非法购买行为包括购买葡萄酒和下注(即赌博)。我想知道如何统计做过其中一项或另一项或两项的记录。

我尝试了 COUNTIFS,但它使用了 AND 逻辑,结果导致重复计算。到目前为止,我已经使用辅助列解决了这个问题,但我不确定这是否是最好的解决方案。

使用一个小数据集,我创建了一个辅助列,并使用 OR 来查找受年龄限制的交易。然后我使用 COUNTIFS 来查找有多少交易是由未成年人进行的。

使用公式的 Excel 工作表

这是个好方法吗?我感觉我找到了一种非常迂回的方式来做本来应该很简单的事情。

答案1

=SUM(IFERROR(--((B:B>YEAR(TODAY())-18)*(C:C+D:D)>0),0))

如果您使用 SUM、COUNTIF、MAXIFS 等函数,则可以使用加法表示 OR,使用乘法表示 AND。分解上述公式中的各个部分:

  • (B:B>YEAR(TODAY())-18)根据日期创建一个 TRUE/FALSE (T/F) 值数组。
  • (C:C+D:D)将 Wine 和 Bets 列相加。这类似于 OR,因为只有当两个值都为 0 时,才会得到 0(假)。
  • (B>YEAR)*(C+D)将两个值相乘。如果任何一个项为 0,这类似于数组的 AND 函数。
  • (B>YEAR)*(C+D)>0然后,返回一个 T/F 数组,它是我们的伪 AND 函数的真实结果。
  • --通过数学运算将 T/F 强制转换为 1/0:negative(negative(T/F)) 使 Excel 将 T/F 转换为等价的数值。
  • IFERROR(~,0)是因为文本值(比如标题)会引发错误,所以我们通过将它们变成 0 来忽略它们。
  • SUM(~)根据我们的伪函数,将所有为 1 或 0 的值相加AND(B>YEAR,OR(C,D))

相关内容