请选择 进入手机版 | 继续访问电脑版

地球村私人订制

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 1472|回复: 0

函数365之MMULT函数:矩阵相乘之美眉函数

[复制链接]
发表于 2017-5-22 12:13:07 | 显示全部楼层 |阅读模式
函数名称:MMULT                                                                                                       
                                                                                                                       
函数作用:MMULT用于返回两个数组的矩阵乘积。MMULT函数通常也被戏称为MM函数或美眉函数。


函数语法:MMULT(数组1, 数组2)
注意事项:                                                                                                                       
1、MMULT函数有且只有两个参数,都是必选参数,可以是单元格区域、数组常量或引用;
2、参数1的列数必须等于参数2的行数,并且参数中只能包含数值,否则结果返回#VALUE!错误值;
3、对于返回结果为数组的公式,必须以数组公式的形式输入。


函数应用:                                                                                                                       
实例1、某公司有十个候选人竞选优秀员工,由全体员工投票打分,投票结果如下,每个蓝球得1分,红球得2分,黑球得3分,绿球得4分,要求分别计算每一个候选人的得分,如F列所示。

函数公式:F2单元格输入
  1. =MMULT(B2:E2,{1;2;3;4})
复制代码
,公式下拉即可
解释说明:需要将每一个颜色的球的个数分别乘以对应的分数然后求和,这里可以用矩阵乘积来计算,我们用MMULT函数,也可以写成=MMULT(B2:E2,ROW($14))。


实例2、下表为去年某公司业务员四个季度的销量明细,要求计算每个业务员总销量的年度排名,效果如F列所示。

函数公式:F2单元格输入
  1. =SUM(N(SUM(B2:E2)<MMULT($B$2:$E$11,{1;1;1;1})))+1
复制代码
,公式下拉即可
解释说明:
1、MMULT($B$2E$11,{1;1;1;1})可以计算出每一个业务员的销量总和;
2、将当前业务员的销量总和与所有业务员的销量总和对比,判断有多少个业务员的销量总和大于当前业务员,其个数+1就是当前业务员的排名;
3、举个栗子验证第2点,假设有且只有3个人的销量大于当前业务员,则他就是第4名(3+1)。


实例3、以下是某公司业务员1-5月销量,公司要求每个业务员每月最低目标完成60吨,请计算出1-5月所有业务员超出60吨的销量总和,如H2单元格所示。

函数公式:H2单元格输入
  1. =SUM(MMULT((B2:F11>=60)*(B2:F11-60),{1;1;1;1;1}))
复制代码
解释说明:
1、先判断是否大于等于60,然后乘以对应的销量,得到的数作为MMULT的第1个参数数组;
2、由于第1参数有5列,所以第2参数必须有5行,这里用常量数组{1;1;1;1;1};
3、最终得到的MMULT会产生多个结果,所以需要用SUM函数求和;


实例4、某部门竞选优秀员工,有3名候选人,由10人投票得票最多的将获选优秀员工,现在要求统计最高得票数和获奖结果,如D2和E2单元格所示。

函数公式:
D2单元格输入
  1. =MAX(MMULT(N(B2:B11=TRANSPOSE(B2:B11)),ROW(1:10)^0))
复制代码
,数组公式CTRL+SHIFT+回车键三键结束
E2单元格输入
  1. =INDEX(B2:B11,MODE(MATCH(B2:B11,B2:B11,0)))
复制代码
,数组公式CTRL+SHIFT+回车键三键结束                                                                                                               
解释说明:、
1、先用TRANSPOSE(B2:B11)将投票结果列转置,然后再与投票列做比较,得到一个10行10列的数组,用N函数将数组的TRUE和FALSE分别转换为1和0;
2、由于第1参数有10列,所以第2参数必须有10行,这里用ROW(1:10)^0表示10行,且每行的数值是1(任何数的0次方等于1);
3、竞选结果用MODE函数,这里不详细解释,不理解可以公众号回复MODE获取该函数文章;                                                                                                               


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

Archiver|手机版|小黑屋|地球村私人订制

GMT+8, 2019-4-21 17:03 , Processed in 0.141051 second(s), 21 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表