Java|精通Sumproduct函数,可以打下Excel的半壁江山,你会吗?( 二 )


[数组3
……)进行计算 。
3、参数的维度必须相同 。
目的:计算商品的总销售额 。
在目标单元格中输入公式:=SUMPRODUCT(D3:D12E3:E10) , 结果如下图:

结果返回错误值 , 从公式中不难发现 , 公式中的两个元素的维度不同 , E3:E10明显比D3:D12少了2个元素 , D3和E3结对 , D4和E4结对……D11以及D12和谁结对呢?一个萝卜一个坑 , D11和D12有萝卜没坑 , 所以就返回了错误值 。
4、单条件计数 。
如下图:

现在要计算员工中相应“学历”的人数 , 如果用Countif函数计算 , 公式为:=COUNTIF(F3:F24J3) , 但如果用Sumproduct去计算 , 怎么操作呢?

从示例图中可以看出 , 公式为:=SUMPRODUCT((F3:F24=J3)*1);先判断F3:F24=J3是否成立 , 如果成立 , 返回TRUE , 否则返回FALSE , 由此建立一个由逻辑值组成的数组 , 前文中已经讲过 , Sumproduct函数会将非数值型的数组元素作为0处理 , 逻辑值自然属于非数值型的数组元素 , 为了避免Sumproduct函数将逻辑值视为0 , 造成统计错误 , 所以乘以辅助值1 , 把逻辑值转换为数值类型的值 , 最后统计求和 , 得到计数结果 。
5、单条件求和 。
目的:统计相应“学历”人员的总“月薪” 。
单条件求和 , 应该是Sumif函数的本职工作 , 公式为:=SUMIF(F3:F24J3G3:G24) , 其实除了用Sumif函数之外 , 用Sumproduct函数也可以实现 。

方法:
在目标单元格中输入公式:=SUMPRODUCT((F3:F24=J3)*G3:G24) 。
解读:
1、首先判断F3:F24=J3是否成立 , 建立一个由逻辑值组成的数组 , 然后和G3:G24元素中相应的值乘积 , 再求和 。
2、如果此处将公式更改为:=SUMPRODUCT(F3:F24=J3G3:G24) , 能否得到想要的结果呢?大家可以思考一下 , 将自己的意见发表到留言区或者私信和小编讨论交流哦!
6、多条件计数、求和 。
目的:按“性别”统计相应“学历”的人数和总“月薪” 。
按“性别”统计相应“学历”的人数 , 这是一个多条件计数的问题 , 如果用Countifs函数去计算 , 公式为:=COUNTIFS(D3:D24J3F3:F24K3) , 参数相对来说较多 , 有点儿简单问题复杂化的感觉 , 所以除了用Countifs函数外 , 还可以用Sumproduct函数 。

公式为:=SUMPRODUCT((D3:D24=J3)*(F3:F24=K3)) 。
除了计数之外 , 还要按“性别”统计相应“学历”的总“月薪” , 就属于求和的问题 , 而且是多条件求和 , 公式为:=SUMIFS(G3:G24D3:D24J3F3:F24K3);也有点儿简单问题复杂化 , 如果用Sumproduct函数来实现:

公式为:=SUMPRODUCT((D3:D24=J3)*(F3:F24=K3)*G3:G24) 。
也可以是:=SUMPRODUCT((D3:D24=J3)*(F3:F24=K3)G3:G24) , Why?留言区或私信告诉小编哦!
应用拓展:
如果老板要知道“男”同志或“女”同志“大本”、“大专”、“职高”的总人数和总“月薪” , 该如何操作呢?
通过上文的学习 , 相信大家已经能够解决这个问题 , 就是将公式进行叠加 。
计数公式为:=SUMPRODUCT((D3:D24=J3)*(F3:F24=K3))+SUMPRODUCT((D3:D24=J3)*(F3:F24=K4))+SUMPRODUCT((D3:D24=J3)*(F3:F24=K5)) 。
求和公式为:=SUMPRODUCT((D3:D24=J3)*(F3:F24=K3)*G3:G24)+SUMPRODUCT((D3:D24=J3)*(F3:F24=K4)*G3:G24)+SUMPRODUCT((D3:D24=J3)*(F3:F24=K5)*G3:G24)
貌似没有任何问题 , 但仔细分析 , 如果有20个学历等次或其他等次 , 公式要重复20次 , 手累就不谈了 , 万一写错 , ………………是不是很麻烦?看小编是如何处理的?

计数公式为:=SUMPRODUCT((D3:D24=J3)*(F3:F24={\"大本\"\"大专\"\"职高\")) 。
【Java|精通Sumproduct函数,可以打下Excel的半壁江山,你会吗?】