求SUMIF的数组等价公式:用单个数组公式统计多状态计数
解决Excel数组公式统计多条件计数的问题
嘿,我来帮你搞定这个数组公式的问题!你之前的思路是对的,但在公式参数的顺序和维度上出了点小问题,咱们一步步来修正:
核心问题分析
你之前尝试的两个公式都有细节错误:
=COUNTIF({"g","y","r"},$H$6:$H$20):COUNTIF的参数顺序搞反了!它的语法是COUNTIF(要统计的区域, 条件),你把条件数组放在了第一个参数的位置,自然会报错。=SUMPRODUCT(1*$H$6:$H$20={"g","y","r"}):这里的条件是水平数组(逗号分隔),和垂直的区域$H$6:$H$20比较后会生成一个二维数组,SUMPRODUCT会把所有元素相加,最终得到总数而非分条件的计数。
正确的数组公式方案
方案1:用COUNTIF实现(推荐,简洁直观)
不管是旧版Excel(需要数组输入)还是新版动态数组Excel,这个公式都能用:
- 旧版Excel:先选中3个连续单元格(比如要输出结果的J6:J8),输入公式:
然后按=COUNTIF($H$6:$H$20,{"g","y","r"})Ctrl+Shift+Enter完成数组输入(公式会自动被大括号包裹)。 - 新版Excel(365/2021及以后):直接在单个单元格输入上面的公式,它会自动溢出到右侧/下方的3个单元格,不需要手动选中区域或按组合键。
方案2:用SUMPRODUCT实现
如果想用SUMPRODUCT,需要调整条件数组的维度为垂直方向(用分号分隔),让它和统计区域的维度匹配:
- 选中3个单元格,输入公式:
同样按=SUMPRODUCT(--($H$6:$H$20={"g";"y";"r"}))Ctrl+Shift+Enter完成数组输入(新版Excel可直接输入溢出)。
验证你的示例数据
对于输入序列:g、r、y、g、g、r、g、g、y
- 两个公式都会返回
5、2、2,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Patrick Honorez




