Google Spreadsheets:使用第n次出现的值进行其他计算?

时间:2013-11-30 17:57:09

标签: google-sheets

我正在使用Google表单和Google Spreadsheets的组合进行机器人竞赛(FRC)中的侦察数据输入和解释。用户使用来自6个不同团队的数据填写每个匹配的表单。该数据按表格放入电子表格中,其他表格使用数据表进行解释,并输出不同的统计数据。

其中一张表旨在显示球队在9-10场比赛中的统计数据的进展情况。我希望它以与他们所进行的比赛相同的顺序显示某个统计数据的值(匹配1:10分;匹配2:15分;等等)。问题在于有超过40支球队,所以球队不能背对背。我正在尝试创建一个函数,在包含团队编号的6列中按行搜索第n个匹配项。然后,该函数将使用该行从该匹配中返回该团队的stat值。

我的电子表格是here。原始数据表称为“游戏”,包含进度数据的表单称为“随时间变化”。在“游戏”表中,每一行都是匹配的,并且每行中有6个团队中的每个团队都有数据。每个团队在“超时”表格中获得一行,每个统计数据将占用大约10列。

该函数将搜索团队编号(在A列中指定)发生的第n次(由第2行中的编号指定)。然后,它将搜索该团队编号的行号,并返回该函数指定的列中的值(例如,如果团队编号出现在C列中,则返回同一行的E列中的值)。在“平均值”表中,我主要使用SUMIF和COUNTIF函数来返回每个统计数据的平均值,但我无法弄清楚如何使用此函数第一步所需的数组函数。我宁愿避免使用隐藏的列和行,因为它只是变得混乱,所以如果整个函数在一个单元格中会很好。我也希望它是一个函数,而不是脚本。

1 个答案:

答案 0 :(得分:0)

此解决方案每行使用一个函数(整个表不是一个函数)。在'过去时间'!B3:

=ArrayFormula(SPLIT(CONCATENATE(REPT('Games'!E$2:BW&CHAR(9);('Games'!C$2:BU=A3)*(MOD(COLUMN('Games'!C$2:BU$2);14)=3)));CHAR(9)))

可以填写到B8。

如果绝对需要为整个表格提供一个公式,那么我确信它可以完成,但它会非常复杂。此外,实际上,这些“连接然后拆分”类型的公式(当数据不是很好的垂直时需要求助)是非常低效的,这取决于源数据的大小。在您的情况下,这可能不是问题,但对于大型源数据集,我更倾向于使用自定义函数来实现这种情况。