如何用SUMPRODUCT/MMULT直接计算向量点积(无需额外单元格与VBA)
直接在公式内定义数组计算点积(无额外单元格/无VBA)
完全可以通过Excel原生的常量数组语法实现你的需求,无需额外单元格存储向量分量,也不需要VBA。以下是具体实现方式:
用SUMPRODUCT实现(最直观)
Excel允许用{}直接定义一维数组,分量用逗号分隔(表示行向量),直接传入SUMPRODUCT即可计算点积。对应你给出的伪代码,公式可写为:
=SUMPRODUCT({1.0,3.0,4.0}, {M42,X22+N42,5.0+B10})
- 注意事项:
- Excel 2019及更早版本:输入后需按
Ctrl+Shift+Enter确认(公式会自动被系统添加外层大括号,不要手动输入) - Excel 365/2021及以后版本:支持动态数组,直接按回车即可生效
- Excel 2019及更早版本:输入后需按
用MMULT实现
MMULT要求第一个数组的列数等于第二个数组的行数,因此需要将其中一个一维行向量转置为列向量,示例公式:
=MMULT({1.0,3.0,4.0}, TRANSPOSE({M42,X22+N42,5.0+B10}))
- 同样,旧版本需按
Ctrl+Shift+Enter,新版本直接回车即可得到结果。
灵活扩展
数组中可以混合常量、单元格引用、运算公式,比如:
=SUMPRODUCT({2, A1*3, SQRT(B2)}, {C3, D4+E4, 10})
完全满足你在公式内动态生成分量的需求。
内容的提问来源于stack exchange,提问作者BoinkingWinkie
相关产品推荐
相关产品推荐

