如何通过Excel公式对二维矩阵逐行求和生成一维数组并操作
当然可以!Excel里有好几招不用辅助列的办法,直接帮你把二维矩阵逐行计算成目标一维数组,后续不管是做>=2这类判断还是MATCH查找都能直接嵌套使用,完全满足你要的简洁性需求。
方法1:动态数组公式(Excel 365/2021及以后版本)
这是最直观也最推荐的方式,因为Excel 365开始支持的动态数组函数专门解决这类问题:
- 用
BYROW函数,它会遍历数组的每一行,对每行执行你指定的计算逻辑。比如你要每行求和,公式就是:
输入完直接回车,Excel会自动生成垂直数组=BYROW({1,0,0;0,0,1;1,0,1}, LAMBDA(row, SUM(row))){1;1;2},而且是动态更新的——如果原矩阵的行数或内容变化,结果会自动跟着调整。 - 要是你想直接用这个数组做后续操作,比如找第一个求和等于2的行号,直接嵌套就行:
或者直接判断哪些行的求和结果满足=MATCH(2, BYROW({1,0,0;0,0,1;1,0,1}, LAMBDA(row, SUM(row))), 0)>=2:=BYROW({1,0,0;0,0,1;1,0,1}, LAMBDA(row, SUM(row)>=2))
方法2:兼容旧版Excel的数组公式(需按Ctrl+Shift+Enter确认)
如果你的Excel版本不支持动态数组(比如2019及更早),也可以用传统数组公式实现:
- 借助
MMULT矩阵乘法函数,配合一个列向量来实现逐行求和:
输入完不要直接回车,要按Ctrl+Shift+Enter(旧版数组公式的确认方式),Excel会生成目标数组=MMULT({1,0,0;0,0,1;1,0,1}, ROW(INDIRECT("1:"&COLUMNS({1,0,0;0,0,1;1,0,1})))^0){1;1;2}。 - 也可以用
SUM结合转置的单位数组来实现:
同样需要按Ctrl+Shift+Enter确认。=SUM({1,0,0;0,0,1;1,0,1} * TRANSPOSE(COLUMN(A:C)^0))
这些方法都不需要额外的辅助列,所有计算都在单个公式里完成,完全符合你要的简洁性要求。
内容的提问来源于stack exchange,提问作者tobriand
相关产品推荐
相关产品推荐

