Excel:如何按指定名称求和对应行的价格与工时乘积?
Excel按姓名求和价格×工时的解决方案
兼容所有Excel版本的方案:SUMPRODUCT函数
假设Sheet2中待计算单元格为B2,对应姓名在A2;Sheet1的姓名列是A:A、价格列是B:B、工时列是C:C,直接使用以下公式:
=SUMPRODUCT((Sheet1!A:A=Sheet2!A2)*Sheet1!B:B*Sheet1!C:C)
原理:(Sheet1!A:A=Sheet2!A2)会生成一个布尔数组,匹配姓名的行返回TRUE(等价于1),不匹配返回FALSE(等价于0);再与对应行的价格、工时相乘,最后通过SUMPRODUCT对所有符合条件的乘积结果求和。
适用于Excel 365/2021及以上版本的方案:SUM+FILTER函数
如果你的Excel支持动态数组函数,可以用更直观的公式:
=SUM(FILTER(Sheet1!B:B*Sheet1!C:C, Sheet1!A:A=Sheet2!A2, 0))
原理:FILTER函数先筛选出姓名匹配的所有行,计算这些行的价格×工时,再用SUM求和;第三个参数0是当无匹配结果时返回0,避免出现错误值。
为什么SUMIF无法实现
SUMIF的语法限制了求和区域只能是已存在的单元格区域,无法在求和参数中直接嵌套乘积运算,因此无法满足需求。
内容的提问来源于stack exchange,提问作者Samy
相关产品推荐
相关产品推荐

