如何在Excel 365中用单个数组函数生成自适应维度的行列矩阵?
Excel 365 动态生成行列求和矩阵的解决方案
核心需求
实现行列值求和矩阵的动态适配:行/列序列维度变化时,矩阵自动扩展/收缩,无需手动复制公式。
方案1:利用数组广播特性(最简写法)
假设:
- 行值序列:存放于任意列(如A列),用
TOCOL(列区域,1)提取非空值实现动态获取 - 列值序列:存放于任意行(如第1行),用
TOROW(行区域,1)提取非空值实现动态获取
公式示例:
=TOCOL(A:A,1) + TRANSPOSE(TOROW(B1:Z1,1))
原理:
TOCOL(A:A,1):自动提取A列所有非空单元格,生成一维行值数组TOROW(B1:Z1,1):自动提取第1行B到Z列的非空单元格,生成一维列值数组TRANSPOSE将列值数组转置为行方向,与行值数组相加时,Excel会自动广播运算,生成完整的求和矩阵
方案2:使用MAKEARRAY函数(适配你的尝试思路)
如果坚持用MAKEARRAY,可以通过INDEX在lambda中定位行/列数组的对应元素:
公式示例:
=MAKEARRAY(ROWS(TOCOL(A:A,1)), COLUMNS(TOROW(B1:Z1,1)), LAMBDA(r,c, INDEX(TOCOL(A:A,1), r) + INDEX(TOROW(B1:Z1,1), c)))
原理:
ROWS(TOCOL(A:A,1)):动态获取行值序列的长度,作为矩阵的行数COLUMNS(TOROW(B1:Z1,1)):动态获取列值序列的长度,作为矩阵的列数- lambda函数中的
r和c分别代表当前迭代的行号和列号,通过INDEX提取对应位置的行值和列值,相加后生成矩阵元素
注意事项
- 若行/列序列是固定区域(而非整列/整行),可直接替换
TOCOL(A:A,1)为具体区域(如A2:A10),同样支持动态变化 - 确保Excel 365已开启动态数组功能(默认已开启)
内容的提问来源于stack exchange,提问作者DataBunny
相关产品推荐
相关产品推荐

