在职场中,你有没有经历过这种绝望时刻?
老板丢给你一份密密麻麻的报表:“把这三百个项目的物料用量,乘上对应的单价,算出每个项目的总成本,下班前给我。”
你熟练地写下一个 =A2*B2+C2*D2+... ,然后绝望地发现,由于条件太复杂,你竟然需要写几十上百个不同的公式,甚至还要拉一堆辅助列。手酸不说,一不留神还会拉错一行。
今天,我要给你介绍一个Excel里真正的“隐世高手”——MMULT函数。
它可能连很多干了5年的表哥表姐都没用过。但只要你掌握了它,上面那种让人崩溃的批量交叉计算,一个公式,一秒搞定。
什么是MMULT?别被名字吓倒!
MMULT的全称是(矩阵乘法)。听起来像大学高数?别慌!抛开书本上那些吓人的符号,在Excel里,它其实就是一个“批量乘加计算器”。
普通乘法是“一对一”:A单元格 × B单元格。
MMULT是“多对多”:把一组数据,按照规则跟另一组数据交叉相乘并求和,一次性吐出所有结果。
它计算的核心口诀只有八个字:“行乘列,乘完相加”。
慢动作拆解:MMULT到底是怎么算的?
为了让你看懂,我们不搞复杂的,就用最简单的 2行2列 数据。
假设你有两组数据:
矩阵A(用量):
矩阵B(单价):
如果不用MMULT,你要算出最终结果,得手写四个复杂的公式。
但如果你在旁边输入公式:=MMULT(A2:B3, D2:E3),回车,它会瞬间给出4个结果:19, 22, 43, 50。
它是怎么变出来的?我们按慢动作放一遍:
动作一:算左上角的“19”
去矩阵A抽它的第1行:[1, 2]
去矩阵B抽它的第1列:[5, 7](注意竖着看)
对应相乘并求和:(1×5) + (2×7) = 5 + 14 = 19
动作二:算右上角的“22”
去矩阵A还是抽第1行:[1, 2]
去矩阵B抽它的第2列:[6, 8]
对应相乘并求和:(1×6) + (2×8) = 6 + 16 = 22
动作三、四:同理类推
拿A的第2行 [3, 4],分别去撞B的第1列 [5, 7] 和第2列 [6, 8],算出 43 和 50。
看明白了吗?每次计算,都是拿A的一行,去撞B的一列,乘完加起来,填到结果里。
我们讲解一个实际案例
这是MMULT在职场中最接地气、最高频的用法。
假设你是工程公司的财务,老板拿来3个工程项目:A栋写字楼、B号公路、C区厂房。
每个项目都需要用到3种材料:钢筋、水泥、木材。
你在Excel里建了一个“用量矩阵”(3行3列),长这样:
同时,采购部给了你这三种材料的“单价矩阵”(3行1列)。
*(⚠️注意:这里必须排成一列,也就是列向量!)*
【传统做法有多蠢?】
如果不用MMULT,为了算A栋写字楼的总成本,你得在单元格里写一长串公式:
=B2*B6 + C2*B7 + D2*B8 (即:100×5000 + 500×500 + 50×2000)
不仅要来回盯着行列拉扯,写错了还不容易排查,三个项目就要写三次这种长公式。
【MMULT降维打击】
你只需要找个空白单元格,输入:
=MMULT(B2:D4, B6:B8)
回车!啪!三个项目的总成本瞬间全部出来!
【后台慢动作揭秘:它是怎么算的?】
我们套用前面的八字真言“行乘列,乘完相加”,来看看Excel在后台为你干了什么:
第一步:算A栋写字楼的总成本(结果的第1行)
去用量矩阵抽它的第1行:[100, 500, 50]
去单价矩阵抽它的第1列(也是唯一的一列):[5000, 500, 2000]
对应相乘并求和:
100 × 5000 = 50万
500 × 500 = 25万
50 × 2000 = 10万
加起来:50万 + 25万 + 10万 = 85万
*(你看,这和你手动写的那个又长又丑的公式,结果一模一样!)*
第二步:算B号公路的总成本(结果的第2行)
去用量矩阵往下走,抽它的第2行:[200, 800, 20]
去单价矩阵还是抽它的第1列:[5000, 500, 2000]
对应相乘并求和:
(200×5000) + (800×500) + (20×2000) = 144万
第三步:算C区厂房的总成本(结果的第3行)
抽用量矩阵的第3行:[50, 300, 100]
撞单价矩阵的第1列:[5000, 500, 2000]
对应相乘并求和:算出 60万。
最终,MMULT直接吐出一个3行1列的结果:850000; 1440000; 600000。没有任何辅助列,代码极其优雅。如果是几十个项目、几十种材料,传统方法要写疯,而MMULT依然是这一行简短的公式!