在列中设置从第一个到最后一个填充单元格的公式范围?

时间:2017-10-28 04:26:16

标签: google-sheets formulas array-formulas

对于我参加的联赛,我们会跟踪比赛和w / l / t并将其计算为排名分数。播放器名称列在U列中,排名分数列在固定表格的AD列中。然后我使用数组公式在E列中按排名顺序列出玩家(然后根据该行中E的值来查看其他统计数据)。具体来说,我在E栏中使用这个公式:

=ARRAY_CONSTRAIN(ARRAYFORMULA(INDEX($U$4:$U$153,MATCH(LARGE($AD$4:$AD$153-ROW($AD$4:$AD$153)/COUNT($AD$4:$AD$153),ROW(E72)-ROW(E$4)+1),$AD$4:$AD$153-ROW($AD$4:$AD$153)/COUNT($AD$4:$AD$153),0))), 1, 1)

我需要能够在U:AD中添加玩家,而不必每次都编辑公式,即从$ U4:$ U153和$ AD $ 4:$ AD $ 153到$ U4:$ U154和$公式中所有不同位置的AD $ 4:$ AD $ 154然后将新公式一直复制下来。

有没有办法可以将范围定义为$ U $ 4:$ U(上一个填充的行)和上面公式中的AD列相同?

我最终在Excel和Google表格中都使用了这个,所以我真的想避免编写脚本。首先,我想为Google表格解决这个问题。

Here is a copy of the sheet我正在努力。

3 个答案:

答案 0 :(得分:0)

为什么你在U4周围使用$符号:U153,删除行的$符号,在保持列固定的同时为你提供灵活性。当你拖动公式时,数据数组将追加新填充的单元格或者你可以创建表格使用Ctrl + T将在您保持添加数据时自动展开。

答案 1 :(得分:0)

您可以使用INDEXCOUNTA

而不是$U4$U153

$U4:INDEX(U4:U,COUNTA(A4:A))

COUNTA部分会提供已填充的行数,并将其输入INDEX以提供$U4:$U153

答案 2 :(得分:0)

您分享的Google表格的答案。

跳到最后寻找简单的解决方案

我使用间接方法,在E1中输入一个公式,计算玩家统计信息的AD列,并添加3以获取最后一行。 (我打算创建全范围的 AD4:AD ?? ,但公式中也有 U4:U73

=counta(AD4:AD)+3

然后,我更改了您的公式 indirect indirect("$AD$4:AD"&E$1),以引用单元格E1中的最后一个行号来创建所需的范围。

=iferror(ARRAY_CONSTRAIN(ARRAYFORMULA(INDEX(indirect("$U$4:U"&E$1),MATCH(LARGE(indirect("$AD$4:AD"&E$1)-ROW(indirect("$AD$4:AD"&E$1))/COUNT(indirect("$AD$4:$AD"&E$1)),ROW(E4)-ROW(E$4)+1),indirect("$AD$4:$AD"&E$1)-ROW(indirect("$AD$4:$AD"&E$1))/COUNT(indirect("$AD$4:AD"&E$1)),0))), 1, 1),"")

我偶然发现,如果您从公式中删除 ARRAY_CONSTRAIN 并将 U4:U73 更改为 U4: AC 73 然后公式将填充您当前拥有 vlookups 的公式右侧的分数。我在E4中举了一个这样的例子,但是请注意,如果要填充公式,则必须删除vlookup公式,否则将显示 REF

我还添加了 iferror ,以便可以将公式复制到"打开的插槽"的末尾。在A列中没有显示错误。

此外,我已经达到了这一点,并且正在考虑因为您使用Google表格,更好的方法是使用 QUERY 功能来提取数据使用 ORDER BY 对单元格E4中的单个公式进行排序。

我没有真正使用QUERY功能,但也许是时候学习了。

修改

事实证明它并没有太多的学习

=QUERY(U4:AD,"SELECT U,V,W,X,Y,Z,AA,AB,AC ORDER BY AD DESC")

将上面的公式放在单元格E4中并删除下面的所有内容并向右分数,然后您就完成了。您会注意到没有间接因为Google了解您不想要空行。

https://docs.google.com/spreadsheets/d/16IclEmKwDFdInIAZhH2vt-tLJ5pbwX06jv9xrUXwhnY/edit?usp=sharing