将带有“行更改”的公式向下拖动除一个间隔之外的另一个间隔



我已经想了好几个小时了。我有这样的公式:

 =PROMEDIO.SI.CONJUNTO(Flankers!C15:C54;Flankers!D15:D54;1)

我已经手动完成了这个。我在Flankers表中有我的数据,现在我正在计算第二张表中我的反应时间和准确度得分的平均值。每个参与者的数据都是相同的(每个参与者93行),我想做的是向下拖动这个公式,自动填写每个参与者(我在一列中有29个参与者)。当然,每个引用只更改一个数字。例如,我有C2中的公式,所以当我把它拖到C3时,公式变为

=AVERAGEIFS(Flankers!C16:C55;Flankers!D16:D55;1)

我需要所有的行都向上93,并保持范围不变(40个单元格),这样C3的单元格应该为=AVERAGEIFS(Flankers!C108:C147;Flankers;D108:D147;1),然后C4的单元格应该是

 =AVERAGEIFS(Flankers!C201:C240;Flankers!D201:D240;1)

等。手动操作非常繁琐(总共2698行)。有人能阐明这一点,并解释到我可以修改它以供未来分析的地方吗?

几乎将其标记为重复的重复单元格跳过10行,但实际上恰恰相反。然而,解决方案是一样的。使用INDEX函数和一些数学运算来实现交错。

最简单的方法是使用OFFSET函数,但该函数被认为是不稳定的,并且只要工作簿中的任何内容发生变化,就会重新调用。每当在任何单元格中键入内容时,大量的这些内容都会导致计算滞后。

使用易失性?OFFSET,

=AVERAGEIFS(OFFSET(Flankers!$C$15, (ROW(1:1)-1)*93, 0, 40, 1),
            OFFSET(Flankers!$C$15, (ROW(1:1)-1)*93, 1, 40, 1), 1)

具有非易失性INDEX、

=AVERAGEIFS(INDEX(Flankers!C:C, 15+(ROW(1:1)-1)*93):INDEX(Flankers!C:C, 54+(ROW(1:1)-1)*93),
            INDEX(Flankers!D:D, 15+(ROW(1:1)-1)*93):INDEX(Flankers!D:D, 54+(ROW(1:1)-1)*93), 1)

第二个公式看起来可能更复杂,但它真正做的只是为AVERAGEIFS函数中的每个范围提供一个起始单元格和结束单元格。INDEX引用了整列,剩下的部分由一些基本的数学运算完成

在ES-ES公式语言中(带有分号列表分隔符),如

=PROMEDIO.SI.CONJUNTO(DESREF(Flankers!$C$15; (FILA(1:1)-1)*93; 0; 40; 1);
                      DESREF(Flankers!$C$15; (FILA(1:1)-1)*93; 1; 40; 1); 1)
=PROMEDIO.SI.CONJUNTO(INDICE(Flankers!C:C; 15+(FILA(1:1)-1)*93):INDICE(Flankers!C:C; 54+(FILA(1:1)-1)*93);
                      INDICE(Flankers!D:D; 15+(FILA(1:1)-1)*93):INDICE(Flankers!D:D; 54+(FILA(1:1)-1)*93); 1)

当整个工作簿中的任何内容发生更改时,而不仅仅是当影响其结果的内容发生变化时,Volatile函数就会重新计算。volatile函数的示例有INDIRECT、OFFSET、TODAY、NOW、RAND和RANDBWEEN。CELL和INFO工作表函数的一些子函数也会使它们变得不稳定

最新更新