ARTICLE · 1144493
Excel函数|SUMPRODUCT——一个函数顶三个,条件求和、计数、排名全能干
Excel函数|SUMPRODUCT——一个函数顶三个,条件求和、计数、排名全能干前面几期讲了COUNTIF家族、SUMIF家族、日期函数。有同学说:“函数太多了,记不住。” 今天讲一个万能函数——SUMPRODUCT。它本来是用来算“乘积之和”的,但用好了,条件求和、条件计数、多条件判断、排名,全都能干。 一个函数,顶三个用。 学会它,很多场景不用再纠结该用COUNTIF还是SUMIF了。 =SUMPRODUCT(数组1, 数组2, ...) 它的标准功能是:把多个数组对应位置相乘,再把乘积加起来。 最简单的例子: 
=SUMPRODUCT(A2:A4, B2:B4) 计算过程:10×3 + 20×2 + 30×1 = 30+40+30 = 100 这就是SUMPRODUCT的本职工作:乘积之和。 SUMPRODUCT最厉害的地方在于:它可以直接在公式里做条件判断,不需要辅助列。 =SUMPRODUCT((B2:B100="销售部")*(C2:C100)) 拆解一下: (B2:B100="销售部"):判断B列每一行是不是“销售部”,是就返回TRUE(1),不是返回FALSE(0) (C2:C100):C列的业绩数据 两者相乘:1×业绩 + 0×业绩 + 1×业绩…… 只有销售部的业绩被加起来 效果:和=SUMIF(B:B,"销售部",C:C)一模一样,但SUMPRODUCT不需要记SUMIF的参数顺序。 场景:统计销售部且业绩大于100万的总金额 =SUMPRODUCT((B2:B100="销售部")*(C2:C100>100)*(C2:C100)) 拆解: 第一个条件:B列等于“销售部” 第二个条件:C列大于100 两个条件相乘,同时满足才为1,否则为0 最后乘以C列的业绩,求和 多条件同理:每个条件用括号括起来,中间用*连接,最后乘以求和区域。 场景一:统计销售部有多少人 =SUMPRODUCT((B2:B100="销售部")*1) 条件后面乘1,把TRUE/FALSE转成1/0,然后加总。 场景二:统计销售部且业绩达标的人数 =SUMPRODUCT((B2:B100="销售部")*(C2:C100>=100)) 两个条件相乘,同时满足才计数。 场景:统计名字里带“北京”的订单总金额 =SUMPRODUCT(ISNUMBER(FIND("北京",A2:A100))*(C2:C100)) 拆解: FIND在A列找“北京”,找到返回位置数字,找不到返回错误 ISNUMBER判断是不是数字,是就返回TRUE 乘以C列的金额,求和 注意:FIND区分大小写,SEARCH不区分。中文场景两者一样。 场景:给业绩排名,但并列时按出现顺序排名 =SUMPRODUCT((C$2:C$100>C2)*1)+1 拆解:统计有多少个比当前业绩大的,加1就是当前排名。并列时排名相同。 翻车一:条件区域和求和区域大小不一致 =SUMPRODUCT((B2:B100="销售部")*(C2:C50)) ❌ 报错 两个区域的行数必须一致,要么都用B2:B100和C2:C100。 翻车二:文本条件没加引号 =SUMPRODUCT((B2:B100=销售部)*1) ❌ 报错 =SUMPRODUCT((B2:B100="销售部")*1) ✅ 文本必须加英文双引号 翻车三:括号漏了 =SUMPRODUCT(B2:B100="销售部")*1 ❌ 报错 整个条件要用括号括起来,再乘以1。 翻车四:条件之间用了逗号而不是星号 =SUMPRODUCT((B2:B100="销售部"),(C2:C100>100)) ❌ 结果不对 多个条件之间用*连接,表示“同时满足”。 觉得有用?点个「关注」支持一下吧!
一、SUMPRODUCT是什么?先看基础用法
