SOM.ALS整列用公式作条件失效,求单公式实现方法
解决Excel中无需辅助列统计特定规格零件出现次数的问题
嘿,这个问题我太懂了!你之前用SOM.ALS失败的原因是:普通的SOM.ALS(对应英文的SUMIF)没办法处理需要逐行计算的数组条件——它的条件区域默认是单值判断,没法自动遍历每行去计算(C:C/(2,8*0,0735)/B:B)=1这个表达式。不过完全不用依赖辅助列,下面给你两个靠谱的单公式方案:
方案1:使用数组公式(兼容旧版Excel)
荷兰语的公式写法如下:
=SOM(ALS((C:C/(2,8*0,0735)/B:B)=1;B:B;0))
注意事项:
- 如果你用的是旧版Excel(非365/2021),输入完公式后必须按
Ctrl+Shift+Enter触发数组运算,Excel会自动给公式加上大括号(别手动输入大括号); - 建议把整列引用
B:B、C:C改成实际的数据范围(比如B2:B1000),这样能提升计算速度,还能避免空行的干扰; - 由于浮点运算的精度问题,有时候本该等于1的结果可能会出现极小误差(比如
0.999999999999或1.000000000001),这时候可以把条件改成近似判断,让结果更准确:
这里的=SOM(ALS(ABS((C:C/(2,8*0,0735)/B:B)-1)<1E-6;B:B;0))1E-6表示误差小于百万分之一,完全能满足你的统计需求。
方案2:用SOM.FILTER(仅Excel 365/2021及以后版本)
如果你用的是较新的Excel版本,FILTER函数会更简洁直观:
=SOM(FILTER(B:B;(C:C/(2,8*0,0735)/B:B)=1;0))
说明:
FILTER会直接筛选出所有符合条件的B列数值,SOM再对这些值求和;- 公式末尾的
0是兜底设置,如果没有符合条件的行,会返回0而不是错误值; - 同样可以加上精度判断优化条件:
=SOM(FILTER(B:B;ABS((C:C/(2,8*0,0735)/B:B)-1)<1E-6;0))
内容的提问来源于stack exchange,提问作者BRTN
相关产品推荐
相关产品推荐

