在 Excel 中,使具有特定单元格引用的公式每第 n 行更改一次

在 Excel 中,使具有特定单元格引用的公式每第 n 行更改一次

我有一个大数据集,它的结构是总有 16 行属于同一组。(例如:A1、A2、A3、A4、A5、A6、...A16 -> Group1;A17、A18、A19、A20、...、A32 -> Group2..等)

我想将一个组(例如:第 1 组)中的每个人与同一组(例如:第 1 组)中的所有其他人进行比较,并将两个比较单元格中较小数字的总和检索到另一个单元格中(不进行自己的比较)。

因此,我得出了一个公式,它为我提供了所需的信息,并且直到现在它才起作用!我在 Excel 中使用的公式如下:

=SUM(MIN(A1,A$1),MIN(A1,A$2),MIN(A1,A$3),MIN(A1,A$4),MIN(A1,A$5),MIN(A1,A$6),MIN(A1,A$7),MIN(A1,A$8),MIN(A1,A$9),MIN(A1,A$10),MIN(A1,A$11),MIN(A1,A$12),MIN(A1,A$13),MIN(A1,A$14),MIN(A1,A$15),MIN(A1,A$16))-A1

但现在的问题是,这个公式只对前 16 行 (A1 - A16) 有效。是否有可能让公式每 16 行更改一次?

或者我该如何陈述公式,使得当它到达 A17 行时,它引用现在接下来的 16 个单元格(A17 到 A32)而不是前 16 个单元格(A1 到 A16)?

在这种情况下,手动执行不是一个选择,因为我有数千行数据,并且公式应该每 16 行切换一次数据集的引用,并引用属于同一组的 16 行。

答案1

首先,我使用数组公式简化了原始公式(需要按Ctrl+Shift+回车

=SUM(IF(A1<$A$1:$A$16,A1,$A$1:$A$16))-A1

那么它需要动态

此公式为工作表的前 16 行返回 1

=(INT((ROW()-1)/16)*16+1)

此公式返回工作表前 16 行的 16

=(INT((ROW()-1)/16)+1)*16

然后将它们输入到索引函数中,以返回单元格 A1(下方)和 A16

INDEX($A$1:$A$32,(INT((ROW()-1)/16)*16+1))

所有这些公式被放在一起以创建最终公式,该公式仍需使用以下公式输入Ctrl+Shift+回车

它假设您的总范围是 A1:A32,需要扩展您的数据集。此外,如果您的数据不是从第 1 行开始,您将需要调整 Int 公式。

=SUM(IF(A1<INDEX($A$1:$A$32,(INT((ROW()-1)/16)*16+1)):INDEX($A$1:$A$32,((INT((ROW()-1)/16)+1)*16)),A1,INDEX($A$1:$A$32,(INT((ROW()-1)/16)*16+1)):INDEX($A$1:$A$32,((INT((ROW()-1)/16)+1)*16))))-A1

这是第一个数组公式的工作图。其余答案只是使其每 16 个单元格更改一次。

在此处输入图片描述

相关内容