我正在尝试计算几个值我试图计算的第一个值是这个数学公式:
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中完成。
答案 0 :(得分:3)
借助OFFSET
和一系列列偏移,可以反转一个范围。
示例:
诀窍是从结束开始并使用偏移{0,-1,-2,-3,-4}
从范围中获取每个单元格。 N
函数是必需的,因为与偏移数组一起使用的OFFSET
会导致{ref,ref,..., ref}
,其中ref
是单元格引用。此{ref,ref,..., ref}
将无法正确评估。 N
从ref
获取数字。
所以你的公式将是:
=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))), "♦")))