在单元格范围上使用数组公式,并在两个方向上扩展

时间:2015-11-24 21:13:19

标签: arrays google-sheets spreadsheet array-formulas

我有一个电子表格,可以跟踪一系列正在进行的研究中的参与者。一张(数据)是我手动放入每个研究中参与者姓名的地方。另一张表(研究历史记录)应自动填充每位参与者的历史和总体研究。

每周,随着小组的成长,新参与者将被添加到研究历史中的A栏,新的研究将被添加到数据表中。

我想使用一个数组公式(或者如果能更好地工作的其他东西),可以无限扩展Study History DOWN的BG列中的公式,以合并新添加的参与者,AS WELL AS扩展EG列中的公式为了正确,纳入新的研究。但是,由于公式已经包含范围(例如在COUNTIF函数中),我无法使数组公式正常运行。我也无法弄清楚如何在两个方向上扩展数组,但也许我正在变暗。

电子表格here

1 个答案:

答案 0 :(得分:0)

您的目标可以通过多种方式实现,关键问题始终是波动性。

例如:动态定义名称可用于从工作表DATA(定义为=OFFSET(Data!$A$1,0,0,COUNTA(Data!$A:$A),COUNTA(Data!$1:$1)))获取数据范围。然而,使用OFFSET函数会使动态定义名称变为不稳定,并且扩展名为Study History的所有公式都指向它。

该解决方案提出使用INDEX函数,以避免波动:

假设工作表DATA中的数据范围从A1开始,并且连续数据范围(即中间没有空白行或空白列)

E1中输入此公式,然后复制到E2:E3,直到带有记录的最后一列

= T( Data!A1 )

E4中输入此公式,然后复制到包含记录的最后一列

= IF( E$1 = "", "",
COUNTIF( E$8  : INDEX(E:E, 1 + ROW( E$7 ) + COUNTA($A:$A ) - COUNTA( A$1:A$7 ) ), E$3 ) )

E5中输入此公式,然后复制到包含记录的最后一列

= IF( E$1 = "", "", IF( E$5 = "", "Enter Invited", E$4 / E$5 ) )

B8中输入此公式,然后复制到C8,直到带记录的最后一行

=COUNTIF( $E8 : INDEX(8:8, - 1 + COLUMN( $E8 ) + COUNTA( Data!$1:$1 ) ), B$7 )

D5中输入此公式,然后复制到包含记录的最后一行

=SUM( $B8:$C8 )

E8中输入此公式,然后复制到包含记录的最后一行和列

=IF( OR( E$1 = "", $A8 = "" ), "",
IFERROR( CHOOSE( 1 + COUNTIF( Data!A:A, $A8 ), "", E$3 ), "!Err" ) )