如何在Excel中用单个公式计算动态数组的列总和?
用单个公式计算动态数组的列总和
针对无表头的动态数组MyArray,以下两种方法可以用单个公式返回所有列的总和动态数组,适用于支持动态数组的Excel版本(365/2021及以上):
方法1:BYCOL + LAMBDA(直观易读,推荐)
直接利用Excel专门处理列的函数,逻辑清晰:
=BYCOL(MyArray, LAMBDA(col, SUM(col)))
- 逻辑说明:
BYCOL会遍历MyArray的每一列,将每列作为参数传入LAMBDA定义的计算逻辑,SUM(col)计算当前列的总和,最终返回垂直排列的动态数组。 - 示例验证:对于你提供的示例数据,公式返回结果为
{1268; 981; 2302};若需要水平排列,可嵌套TRANSPOSE函数:=TRANSPOSE(BYCOL(MyArray, LAMBDA(col, SUM(col))))
方法2:MMULT矩阵乘法(无需Lambda函数)
通过矩阵乘法实现列求和,适合习惯用数组运算的场景:
=MMULT(TRANSPOSE(ROW(MyArray)^0), MyArray)
- 逻辑说明:
ROW(MyArray)^0生成与MyArray行数一致的全1数组(任何数的0次方为1);TRANSPOSE将全1行数组转为列数组;MMULT执行矩阵乘法,全1列与原数组相乘等价于对每列数值求和,最终返回水平排列的动态数组{1268, 981, 2302}。
内容的提问来源于stack exchange,提问作者user19904452
相关产品推荐
相关产品推荐

