在SUMPRODUCT

时间:2016-04-29 04:50:57

标签: excel excel-formula

我正在尝试计算几个值我试图计算的第一个值是这个数学公式:

RL =(P 5 * a 1 + P 4 * a 2 + P 3 * a 3 + P 2 * a 4 + P 1 * a 5 )/ L

第二个公式中有RL,但遇到同样的问题。

M = RL * x - P 5 (xa 1 ) - P 4 ( xa 2 ) - P 3 (xa 3 ) - P 2 (xa 4 ) - P 1 *(xa 5

当我看到这些时,我看到了一个SUMPRODUCT。

我的 P 1 ... P 5 值按 $ C $ 12范围内的相同顺序排列: $ G $ 12 或命名范围 Axle_P

我的 a 1 ... 5 值在数组偏移量($ X)中的排列顺序相同$ 12,$ AL $ 13,0,1,5)其中 X12 高于 a 值的第一行以及 a的第一列值。 AL13 保存感兴趣的行的行号。

L 是格式 $ D $ 8
x 是单元格 $ M41

所以我想使用公式

For calculating RL in say cell AA1

=SUMPRODUCT(Axle_P,offset($X$12,$AL$13,0,1,5))/$D$8
OR
=SUMPRODUCT($C$12:$G$12,offset($X$12,$AL$13,0,1,5))/$D$8

For calculating M

=$AA$1*$M41 - SUMPRODUCT($M41-offset($X$12,$AL$13,0,1,5),Axle_P)
OR
=$AA$1*$M41 - SUMPRODUCT($M41-offset($X$12,$AL$13,0,1,5),$C$12:$G$12)

问题是导致错误的序列:

(P 1 * a 1 + P 2 * a 2 + P 3 * a 3 + P 4 * a 4 + P 5 * a 5

如何反转P数组或A数组的顺序?

现在我计划将这些最终合并到一个单元格中。当我完成后,我计划将公式复制到5行。所以基本上有5个不同的x值,输出在5个单元格中。

VBA不是一个有效的选项,我宁愿避免使用CSE,但如果这是唯一的方法,那么我将受苦。

现在,如果你想知道我为什么不把M换成

M = RL * x - (RL * L)

是否有一些其他的警告我将在我弄明白后将 P n-i + 1 设置为0如果 a i 小于0或大于 L ,我计划了那部分。至少我这样做,如果这可以在SUMPRODCUT中完成。

2 个答案:

答案 0 :(得分:3)

借助OFFSET和一系列列偏移,可以反转一个范围。

示例:

enter image description here

诀窍是从结束开始并使用偏移{0,-1,-2,-3,-4}从范围中获取每个单元格。 N函数是必需的,因为与偏移数组一起使用的OFFSET会导致{ref,ref,..., ref},其中ref是单元格引用。此{ref,ref,..., ref}将无法正确评估。 Nref获取数字。

所以你的公式将是:

=SUMPRODUCT($C$12:$G$12,N(OFFSET($AB$12,$AL$13,-(COLUMN($C:$G)-COLUMN($C:$C)))))

=SUMPRODUCT(N(OFFSET($G$12,0,-COLUMN($C:$G)+COLUMN($C:$C))),OFFSET($X$12,$AL$13,0,1,5))

答案 1 :(得分:0)

...同时在Google表格中

=SUMPRODUCT(A2:E2,QUERY(A3:E3,"select E,D,C,B,A"))

=SUMPRODUCT(A2:E2,QUERY({A3:E3},"select Col5,Col4,Col3,Col2,Col1"))

=SUMPRODUCT(A1:A5, TRANSPOSE(SPLIT(JOIN( ,
 ARRAYFORMULA(MID(TEXTJOIN("♦", 1, B1:B5), 
 LEN(TEXTJOIN("♦", 1, B1:B5))-ROW(INDIRECT("1:"&
 LEN(TEXTJOIN("♦", 1, B1:B5))))+1, 1))), "♦")))

0