-1

我的代码是:

(SUM(INDIRECT(ADDRESS(ROW()-(I4:I- 1);COLUMN()-4;4)&":"
&ADDRESS(ROW();COLUMN()-4;4)))*( ( J4:J ) / 10 ))))

基本上我想对 Gx - Gy 中的单元格求和,但范围由单元格 I4 确定。上面的代码有效,但仅适用于一行。我希望它适用于数据所在的整个列。

=ArrayFormula( if( J4:J = "" ; "" ;

所以我把ArrayFormula放在前面,计算只显示在数据所在的位置,但结果总是=第一行的结果??

谁能告诉我为什么会发生这种情况,该怎么办?

我的工作表:-> https://docs.google.com/spreadsheet/ccc?key=0AkKaHeBdxneDdHNNQUY5elliWnZRcEVEdkZpZ2h4S1E&usp=sharing

4

1 回答 1

0

感谢 TOM HORWOOD,他回答了我的问题:

凭借矩阵乘法的魔力和这个解决方案(信用到期的信用),我已经设法让它做你想做的事。

=ArrayFormula(IF( J4:J = "" ; "" ; MMULT((ROW(G4:G)>=TRANSPOSE(ROW(G3:G)))) ((ROW(G4:G)+1-I4:I )<=TRANSPOSE(ROW(G3:G)));G3:G) ( ( J4:J ) / 10 ) )) 我的头已经很痛了,所以我不会过多解释细节,只是说关键的魔法发生在

="MMULT((ROW(Range1)>=TRANSPOSE(ROW(Range2)))*((ROW(Range1)+1-I4:I)<=TRANSPOSE(ROW(Range2)));Range2)))" 和我已经使用粗略的方程式生成器向您的公共表格添加了第二张表格,用于理解或替代应用程序。

谢谢汤姆!!

于 2013-10-08T09:35:50.797 回答