Excel 中根据某些条件计算列表中数字出现频率的公式是什么?例如,列表中有多少个奇数,有多少个偶数(值 > 50)或有多少个奇数(值 < 50)等等?
答案1
修订的解决方案
=SUM(ISODD(A2:A101+0) * (A2:A101 > 50))
这是一个数组公式,因此使用 CTRL+SHIFT+ENTER 来完成公式,而不仅仅是输入。
解释
编写此公式时存在很多问题,这些问题可以解释为什么你会遇到困难。我的第一次尝试是:
=SUMIF(AND(ISODD(A2:A101),(A2:A101) > 50),"= TRUE")
这里的问题是 SUMIF 只能直接作用于范围,AND 不能作用于数组,除非你对其进行修改,否则 ISODD 不能作用于数组。通常我会放弃单个单元格/单个公式的想法,创建几个列并逐个单元格执行此操作,例如 B2 = AND(ISODD(A2),A2 > 50)+0,然后对该列求和。
让我们修复它。首先用布尔值到数字转换的 SUM 替换 SUMIF:
=SUM(AND(ISODD(A2:A101),(A2:A101) > 50)+0)
为了使 AND 数组具有功能,我们将用标准乘法运算符替换它(使用 * 我们可以删除 +0)
=SUM(ISODD(A2:A101) * (A2:A101 > 50))
最后,我们需要使用 (ODD(A2:A101) = A2:A101) 或最近学到的技巧 ISODD(A2:A101+0) 修复 ISODD 使其能够处理数组,这可以欺骗 ISODD 处理数组
=SUM(ISODD(A2:A101+0) * (A2:A101 > 50)) ------> CTRL+SHIFT+ENTER!
对于其他标准,例如
=SUM(ISODD(A2:A101+0) * (A2:A101 > 50) * (A2:A101 <= 100)) ------> CTRL+SHIFT+ENTER!