对于我参加的联赛,我们会跟踪比赛和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表格解决这个问题。
答案 0 :(得分:0)
为什么你在U4周围使用$符号:U153,删除行的$符号,在保持列固定的同时为你提供灵活性。当你拖动公式时,数据数组将追加新填充的单元格或者你可以创建表格使用Ctrl + T将在您保持添加数据时自动展开。
答案 1 :(得分:0)
您可以使用INDEX
和COUNTA
而不是$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