Excel 2019数组公式中如何生成动态长度的数组?
解决Excel 2019动态生成1到N数组并计算SUMPRODUCT的问题
原公式报错的核心原因:ADDRESS返回的是文本格式的单元格地址(比如"A1:A5"),但ROW函数需要的是真实的单元格区域引用,无法直接识别文本内容,必须先将文本转换为可被Excel识别的区域引用,以下是三种可行的解决方法:
方法1:用INDIRECT转换文本引用(最贴合原思路的改法)
在原公式外层套INDIRECT函数,它的作用就是把文本格式的地址转换成真实的单元格区域:
=SUMPRODUCT(ROW(INDIRECT(ADDRESS(1,1)&":"&ADDRESS(A1,1))))
当A1为5时,INDIRECT会将"A1:A5"转换成真实的单元格区域,ROW就能生成{1,2,3,4,5}数组,最终SUMPRODUCT计算出总和15。
方法2:简化写法(去掉冗余的ADDRESS)
不用ADDRESS拼接地址,直接用文本拼接生成区域字符串,再通过INDIRECT转换:
=SUMPRODUCT(ROW(INDIRECT("A1:A"&A1)))
这个写法更简洁,效果和方法1完全一致,适合快速输入。
方法3:非易失性函数解法(更稳定高效)
INDIRECT是易失性函数,每次工作表有变动都会重新计算,数据量大时会拖慢性能。可以用INDEX生成动态区域,它是非易失性的,运行更稳定:
=SUMPRODUCT(ROW(INDEX(A:A,1):INDEX(A:A,A1)))
原理是INDEX(A:A,1)返回A1单元格,INDEX(A:A,A1)返回第A1行的A列单元格,两者组合成动态区域(比如A1:A5),ROW就能生成对应数组。
内容的提问来源于stack exchange,提问作者Rasec Malkic
相关产品推荐
相关产品推荐

