如何在Excel中用非连续单元格创建数组用于SUMPRODUCT函数?
解决SUMPRODUCT中非连续单元格数组的问题
嘿,我完全懂你的困扰!直接用{A1,A3,B7}这种写法确实不行,Excel没法把非连续的单元格引用直接解析成数组。不过有几个实用的方法能搞定这个需求,我给你一一拆解:
方法1:用N函数转换联合引用
把非连续单元格用括号包起来形成联合引用,再用N()函数把它转换成Excel能识别的数值数组,公式如下:
=SUMPRODUCT(N((A1,A3,B7)),{7,0,5})
原理:括号(A1,A3,B7)会把这几个单元格变成一个临时的联合区域,N()函数则会把这个区域里的每个值提取出来,生成一个和{7,0,5}维度匹配的数组,这样就能正常执行点积运算了。
方法2:用CHOOSE函数构建数组
如果觉得N函数不够直观,也可以用CHOOSE()函数手动构建目标数组,公式是:
=SUMPRODUCT(CHOOSE({1,2,3},A1,A3,B7),{7,0,5})
原理:CHOOSE({1,2,3},A1,A3,B7)会根据序号数组{1,2,3}依次选取后面的A1、A3、B7,生成一个包含这三个单元格值的数组,完美适配SUMPRODUCT的要求。
方法3:Excel 365/2021专属简化写法
如果你用的是支持动态数组的Excel版本(365或2021),那更简单,直接用括号包起来非连续引用就行,不需要额外函数:
=SUMPRODUCT((A1,A3,B7),{7,0,5})
动态数组特性会自动把联合引用转换成可计算的数组,一步到位!
测试示例
假设A1=1,A3=2,B7=3,上面三个公式都会计算出:1*7 + 2*0 + 3*5 = 22,和你原来的示例结果完全一致。
小提醒
如果你的非连续单元格里有文本内容,N()函数会把文本转为0,CHOOSE配合SUMPRODUCT时也会把文本当作0处理,要是需要保留非数值内容的特殊逻辑,记得提前做数据处理哦~
内容的提问来源于stack exchange,提问作者user9419734
相关产品推荐
相关产品推荐

