0

我想“A9 和 A54 之间的每 5 行”,即

A(5x + 9)-A(54),

里面。

这里还有一个子问题。是否可以使用函数或 VBA对

以下是一些基于答案的测试问题:

  • =SUMPRODUCT(--(MOD(ROW(Range)-MIN(ROW(Range))+1,1)=0),A1:A50)-- 对 A1 到 A50 行求和?
  • =SUMPRODUCT(--(MOD(ROW(A50)-MIN(ROW(A50))+1,2)=0),A1:A50)-- 每隔一行求和,A1 到 A50
  • =SUMPRODUCT(--(MOD(ROW(A5:A50)-MIN(ROW(A1:A50))+1,5)=0),A1:A50)-- 对 A5 和 A50 之间的每 5 行求和?

基于:

用 A9:A54 代替 Range,用 5 代替您的特定查询。只有那些部分改变答案将保持不变,即使您删除范围以下的行。

4

2 回答 2

4

我会使用更强大的 RocketDonkey 答案版本。他评论中的 -8 是因为范围的第一行是 9 但通常对于任何单列范围,您可以使用此公式对每 n 行求和(从范围的第一行开始)

=SUMPRODUCT(--(MOD(ROW(Range)-MIN(ROW(Range)),n)=0),Range)

用 A9:A54 代替 Range,用 5 代替您的特定查询。只有那些部分改变

即使您删除 Range 以下的行,答案也将保持不变

解释

ROW(Range)-MIN(ROW(Range)) 部分将返回一个整数数组,从 0 开始到整数个数对应范围内的单元格数,所以

=ROW(A9:A54)-MIN(ROW(A9:A54))

产生这个数组

{0;1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45}

当您将其输入到除数 5 的 MOD 函数时,显然 MOD(0,5) = 0,因此在这种情况下,第一个单元格 (A9) 始终满足条件......因此每隔 5 个(或第 n 个) ) 范围内的单元格,所以

=SUMPRODUCT(--(MOD(ROW(A9:A54)-MIN(ROW(A9:A54)),5)=0),A9:A54)

从范围内的第一个单元格开始,每隔 5 个单元格求和,即对 A9、A14、A19、A24....等进行求和。

显然你可以用 9 替换 MIN(ROW(A9:A54)) 但是如果你删除第 9 行下面的一些行,公式结果会改变,所以使用这个结构会更健壮一些

于 2012-10-22T13:18:11.017 回答
0

我猜ROW(A9:A54)-MIN(ROW(A9:A54)inMOD(ROW(A9:A54)-MIN(ROW(A9:A54)),5产生数字-9。在这个等式 MOD 中,x in -x 的值是数轴上远离 的位置cell 0。因此, , 的结果ROW(A9:A54)-MIN(ROW(A9:A54)使-9A9 成为我们MOD遍历的数组中的第 0 个条目。有可能这就是它的=0用途......

=SUMPRODUCT(--(MOD(-9,5)),A9:A54)显然具有相同的效果。出于某种原因,首选长版本,即:=SUMPRODUCT(--(MOD(ROW(Range)-MIN(ROW(Range)),n)=0),Range). 我没有看到优势,但它与移动或删除单元格有关。我想它正在发生变化,因为有一个空的单元格应该不重要。

对于我们为什么使用=SUMPRODUCTand notSUM--而不是SUM. --做加法,我猜它也将布尔值转换为数字。我不明白为什么这些东西都是必要的,在这里。也许这是一个以防万一的事情。例如,也许每 15 行是一个不需要的字符串常量,而不是所需的数字。不过,我认为将一个系列包含在另一个系列中会更普遍有用。

于 2012-10-23T01:11:32.177 回答