excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel函数:MMULT函数的巧妙应用

MMULT 函数是 Excel 中一个功能强大且有趣的函数,它返回两个数组的矩阵乘积。在本文中,我们将深入探讨 MMULT 函数在条件求和、累计求和、条件计数等方面的应用,这些技巧将帮助你更好地利用MMULT 函数,提高数据处理的效率和灵活性。

MMULT 函数返回两个数组的矩阵乘积其语法如下:MMULT(array1, array2)。

  • array1 和 array2 是要进行矩阵乘法运算的两个数组;

  • array1中的列数与 array2中的行数相同,且这两个数组必须是数字;

  • 结果矩阵的行数与 array1 的行数相同,矩阵的列数与 array2 的列数相同。

一、求积

利用 MMULT 函数,我们可以便捷地计算综合成绩,实现成绩和权重的矩阵相乘:D2 = MMULT(B2:C6,G2:G3),是一个5 * 2的数组和2 * 1的数组,结果返回一个5 * 1的数组。

再如下图所示,用MMULT(ROW(1:9),COLUMN(A:I))乘积生成乘法表

二、条件求和

通过结合 MMULT 函数和逻辑运算,我们可以轻松实现对特定条件下求和操作,假设我们要需要计算值小于60的所有单元格之和,可以使用以下公式:G2=MMULT((B2:F6<60)*(B2:F6), ROW(1:5)^0)

  • (B2:F6<60) * (B2:F6):单元格区域内小于60的单元格,生成了一个5 * 5的数组;

  • ROW(1:5)^0 生成一个5 * 1的,由数字1组成的数组。

三、条件累加求和

MMULT 函数不仅能够进行条件求和,还能实现按条件累加求和,比如统计商品库存量,公式如下:C2=MMULT((ROW(1:9)>=COLUMN(A:I))*1,($A$2:$A$10=A2)*$B$2:$B$10)

  • 输入公式后需要,使用Ctrl+Shift+Enter,然后往下填充公式;

  • (ROW(1:9)>=COLUMN(A:I))*1:生成一个 9 * 9的,由数字1和0组成的数组;

  • ($A$2:$A$10=A2)*$B$2:$B$10:返回单元格对应商品的出入口数组,商品A为{93;0;-65;0;0;0;0;94;0};

  • MMULT()+Ctrl+Shift+Enter:返回数组1的第一行数据和数组2的乘积。

四、条件计数

利用 MMULT 函数,我们可以高效地统计数据中每个元素出现的次数,如下图所示,需统计每个名字出现的次数,可以使用以下公式:B2 = MMULT(($A$2:$A$9=TRANSPOSE($A$2:$A$9))*1,ROW($A$2:$A$9)^0)

  • $A$2:$A$9=TRANSPOSE($A$2:$A$9)是一个8 * 8的逻辑数组,乘以1转换成数字数组;

  • ROW($A$2:$A$9)^0,生成一个8 * 1的,由数字1组成的数组。

五、一维表转二维表

有时候,我们需要把一维表转换成二维表以便更好地展示数据。通过 MMULT 函数可以帮助我们快速实现这一转换:F2 =MMULT((TRANSPOSE(A2:A10)=E2:E4) * 1,(B2:B10=F1:H1) * C2:C10)

  • TRANSPOSE(A2:A10)=E2:E4:生成1个3 * 9的逻辑数组,乘以1转换成数字数组;

  • (B2:B10=F1:H1):生成1个9 * 3的逻辑数组,乘以 C2:C10转换为成绩的数字数组。

六、按指定次数重复数据

若需按照指定的次数重复数据,可以使用如下公式:D2=LOOKUP(ROW(A1),MMULT(N(ROW($1:$5)>COLUMN(A:D)),B$2:B$5)+1,A$2:A5)&""

  • N(ROW($1:$5)>COLUMN(A:D)):返回4 * 4的,由数字1和0组成的数组;

  • MMULT(N(ROW($1:$5)>COLUMN(A:D)),B$2:B$5)+1:返回各姓名第一次出现的索引位置,即{1;2;4;7;11};

  • LOOKUP(ROW(A1),{1;2;4;7;11},A$2:A5):查找等于或最接近且不大于row()函数的数值,返回A$2:A5中相同位置的值。

七、置换列

如果想置换A列和B列的数据,可以使用公式:E2=CELL("contents",(INDIRECT(TEXT(MMULT(ROW(1:5)/1%+COLUMN(A:B),1-MUNIT(2)),"r0c00"),)))

  • 输入公式后需要,使用Ctrl+Shift+Enter,然后往下填充公式;

  • ROW(1:5)/1%+COLUMN(A:B):生成一个4 * 2的数组,{101,101;201,202;...}

  • MMULT(...,1-MUNIT(2)):将上述数组的两列数组置换,结果{102,101;202,201;...}

  • INDIRECT(TEXT(..., "r0c00"):通过INDIRECT间接引用单元格,如r1c02, r1c01;

  • CELL("contents", INDIRECT(...)):通过CELL函数返回单元格的值。

希望这篇文章对你有帮助,您的点赞和收藏是我持续更新文章的最大动力,感谢您的支持。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接