0x00 使用情景及模拟数据生成
有时要获得某几列数据乘积和即:同一行的数据先相乘后整列相加
具体而言如下5列*30行的模拟数据:
我们想要得到的记过是B列数据与F列数据先相乘后相加
比如 B2*F2+B3*F3+ ...
0x01 取得固定结果,不考虑特定值的选择及筛选
如下的例子主要应用在值固定的情形
值得一提的是SUMPRODUCT与SUM的一个特性,SUMPRODUCT不需要进行三键组合就可生成数组,而SUM因为三键组合使用的频率就比较低。
0x02 考虑特定值的选择及不考虑筛选
如下的例子来获取序号是奇数的所有结果的乘积和
mod函数是进行取余计算比如:
mod(1,2)=1->1/2余1
mod(2,2)=0->2/2余0
0x03 通过直接筛选的值动态显示相关结果
这个例子解决了在一个筛选表中根据筛选结果来显示乘积和
主要应用的是SUBTOTAL 和 OFFSET的特性
其中ROW(1:30)生成一个1到30的数组{1,2,3...,30},从而使offset得到一个数组:
{
B2,
B3,
B4,
...
B31
}
通过SUBTOTAL使得未筛选单元格在数组中的值变为0,如下:
{
B2->118,
B3->0,不在筛选区间
B4->0,不在筛选区间,
...,
B11->56,
...
}
然后与目标数据进行相乘,那些转化为0的数据与目标数据列相乘依然为0
最后以上相乘的结果加总起来。