Excel数组函数应用:如何用单公式返回各BIN对应零件编号的数量?
解决Excel中无辅助列统计各BIN对应零件编号数量的问题
嘿,我来帮你搞定这个需求!你现在需要的是不用辅助列、单公式就能统计每个BIN对应的零件编号(Part Number)的数量,对吧?结合你目前在用的SUMPRODUCT(($I$9:$I$25=L9)*1),我分两种Excel版本给你针对性方案:
一、Excel 365/2021(支持动态数组)
这版本的函数最省心,直接用动态数组公式就能一次性输出所有结果,不用下拉填充:
推荐:GROUPBY函数(最新版本支持)
这个函数专门用于分组统计,一行公式直接搞定:=GROUPBY($I$9:$I$25, $I$9:$I$25, COUNT, 0)逻辑:以
$I$9:$I$25为分组依据,对同一组的内容计数,最后参数0表示忽略空值。输入后会自动生成两列结果:第一列是所有不重复的BIN值,第二列是对应BIN的零件编号数量。兼容方案:UNIQUE+COUNTIFS+HSTACK
如果你的版本还没更新GROUPBY功能,用这三个函数组合也能实现:=HSTACK(UNIQUE($I$9:$I$25), COUNTIFS($I$9:$I$25, UNIQUE($I$9:$I$25)))逻辑:
UNIQUE提取所有不重复的BIN值,COUNTIFS分别统计每个BIN的出现次数,HSTACK把这两部分结果横向拼接在一起,自动生成完整的统计表格。
二、旧版Excel(不支持动态数组,如2019及更早)
旧版没有动态数组函数,得用数组公式逐个生成结果:
在第一个需要输出结果的单元格(比如M9)输入以下公式,然后按Ctrl+Shift+Enter(不是单独回车)触发数组计算,再下拉填充到需要的行:
=IFERROR(SUMPRODUCT(--($I$9:$I$25=INDEX($I$9:$I$25, MATCH(0, COUNTIF($M$8:M8, $I$9:$I$25), 0)))), "")
逻辑拆解:
COUNTIF($M$8:M8, $I$9:$I$25):统计已经输出过的BIN,避免重复统计MATCH(0,...):找到第一个还没被统计的BIN的位置INDEX提取该BIN值,再用SUMPRODUCT统计这个BIN的出现次数IFERROR处理最后没有新BIN时的空值,避免报错
另外补充:如果你只是想针对单个单元格(比如L9对应的BIN)返回数量,你原来的SUMPRODUCT公式已经完全能用,上面的方案主要是解决批量统计所有BIN的需求。
内容的提问来源于stack exchange,提问作者Jim from Princeton
相关产品推荐
相关产品推荐

