Excel中结合筛选条件用SMALL函数并忽略零值求父产品最低非零价格
解决父产品变体的最低非零价格计算问题
嘿,针对你这种有多父产品变体(不同尺寸、颜色)且存在0值价格的场景,你写出的公式逻辑其实已经很靠谱了!咱们先拆解下它的运行思路,再看看有没有更简洁的优化方案:
原公式逻辑拆解
你写的公式是这样的:
=IF(SUMIFS(I:I,A:A,A3)=0,0,IF(AND(SUMIFS(I:I,A:A,A3)>0,MINIFS(I:I,A:A,A3)>0),MINIFS(I:I,A:A,A3),SMALL(IF(A:A=A3,I:I),2)))
它的执行步骤是:
- 先用
SUMIFS(I:I,A:A,A3)=0判断当前父产品的所有变体价格是不是全为0,如果是,直接返回0 - 如果存在非零价格,再检查该父产品的最低价格本身是不是非零——如果是,就直接返回这个最低值
- 要是最低价格是0,就用
SMALL(IF(A:A=A3,I:I),2)取第二小的价格(毕竟最小的是0,第二小就是咱们要的最低非零值)
更简洁的替代公式
其实咱们可以直接利用MINIFS的多条件筛选能力,一步到位搞定,不用嵌套这么多层:
=IFERROR(MINIFS(I:I,A:A,A3,I:I,">0"),0)
逻辑说明:
MINIFS(I:I,A:A,A3,I:I,">0")会直接筛选出当前父产品(A列等于A3)且价格大于0的所有变体价格,然后取最小值- 如果这个父产品的所有价格都是0,
MINIFS会返回错误值,这时候IFERROR就会捕获这个错误,返回0
兼容旧版Excel的方案
要是你用的是Excel 2016及更早的版本,不支持MINIFS函数,可以用数组公式替代:
=IFERROR(MIN(IF((A:A=A3)*(I:I>0),I:I)),0)
⚠️ 注意:输入这个公式后,需要按Ctrl+Shift+Enter触发数组计算(Excel 365及以后的版本不需要这一步,直接回车就行)
小提示
尽量避免用整列引用(比如A:A、I:I),改成实际的数据范围(比如A2:A1000、I2:I1000),这样能提升公式的运行效率哦!
内容的提问来源于stack exchange,提问作者RVPSRichard
相关产品推荐
相关产品推荐

