我有一张Google Sheet,其中包含每月竞赛的结果。格式为
string code = "FFDDAA";
Color color = Color.FromArgb(Convert.ToInt32(code, 16));
我想用这些数据做两件事
我想创建一个包含最新“最佳”结果的新工作表。对于此处提供的数据
Name | Date | Score
--------------------------------
Alan Smith | 14/01/2016 | 500
Bob Dow | 14/01/2016 | 450
Bob Dow | 16/01/2016 | 470
Clare Allie| 16/01/2016 | 550
Declan Ham | 16/01/2016 | 350
Alan Smith | 10/02/2016 | 490
Bob Dow | 10/02/2016 | 425
Declan Ham | 12/02/2016 | 400
Declan Ham | 12/02/2016 | 390
Clare Allie| 12/02/2016 | 560
即。 2月的结果是每人“最佳”得分。在这里,Declan Ham的低分“390”被删除了。
我想要另一张表来保持锦标赛排名。人们按其前3个月的分数排名。即获得每个人每个月的最高分,并将前三个分数合并在一起,以便在比赛中占据一席之地。
到目前为止,我已尝试使用Google查询,vlookup,过滤器来获取这些新工作表。但是,只关注1),我能够实现的最好的是
Alan Smith | 10/02/2016 | 490
Bob Dow | 10/02/2016 | 425
Declan Ham | 12/02/2016 | 400
Clare Allie| 12/02/2016 | 560
这将从最近一个月获得结果。但它并没有删除人们重复的条目。
有没有人建议我如何达到这些要求?感觉我此刻正在踩着水。
答案 0 :(得分:1)
您需要确定每个人的最高分,而不是尝试删除重复项;您可以通过按人分组值,然后使用max()
进行聚合来实现。以下是2016年2月的情况:
=query(Results!A1:C,"select A,max(C) where todate(B) > date '2016-2-1' group by A")
我们可以使用电子表格公式获取年份和月份,并将查询与它们连接起来,而不是在最近一个月的开头使用固定值:
=query(Results!A1:C,"select A,max(C) where todate(B) > date '"&year(max(Results!B2:B))&"-"&month(max(Results!B2:B))&"-1' group by A")
这解决了你的第一个问题。
在我看来,对于单个电子表格公式,您的第二个目标过于复杂。不过,这是使用多个公式实现它的方法!
X& Y轴由电子表格公式填写。在X轴(橙色)上,我们在单元格A3
中使用此名称填充参与者名称:
=unique(Results!A2:A)
Y轴由日期(绿色)组成。这些是具有分数的每个唯一月份的开始日期,使用单元格D2
中的以下公式计算。这导致字符串,例如2016-01-1
,以后的公式可以使用该格式。
=TRANSPOSE(SORT(UNIQUE(ARRAYFORMULA(TEXT(Results!B2:B13,"YYYY-MM-1")))))
这里是单元格D3
的公式,它将计算A3
中显示的用户记录的3个最高得分的总和,显示在{{1}中的月份}}。 (将公式复制并粘贴到所有参与者和几个月,并进行调整。)
D2
关于该公式的要点:
查询范围需要使用固定值,因此在复制到其他单元格时不会调换。但是,它仍然是开放式的,以便在"结果"上吸收额外的分数。片材。
=sum(query(Results!$A$1:$C,"select C where A='"&$A2&"' and todate(B) >= date '"&B$1&"' and todate(B) < date '"&IF(ISBLANK(C$1),TEXT(TODAY()+1,"yyyy-mm-dd"),C$1)&"' order by C desc limit 3 label C ''"))
Results!$A$1:$C
子句用于从WHERE
工作表中选择适用于给定参与者(Results
)的行,并且落在列的前一个月内({ {1}})。
A='"&$A2&"'
通过首先将上述结果降序排序,然后将结果限制为3行,可以找到本月最佳的3个分数。
C$1
最后,...and todate(B) < date '"&IF(ISBLANK(C$1),TEXT(TODAY()+1,"yyyy-mm-dd"),C$1)&"'
标题被这个小技巧所抑制,因此我们得到一个数字作为结果:
...order by C desc limit 3
单个锦标赛总计显示在QUERY
列中,整行中的...label C ''
范围,例如对于单元格C
:
SUM
列C3
中的相应排名是:
SUM(D3:3)
为了更简单的复制/粘贴,您可以在这些公式中进行一些错误检查,以便它们可以在相应数据之前放置在工作表中 - 例如,在您的季节开始时。使用B
或RANK(C3,C$3:C)
对此非常有效。
B3&amp;下:
IF(ISBLANK(...
C3&amp;下:
IFERROR(...
D3&amp;其他领域:
=IFERROR(RANK(C3,C$3:C))
答案 1 :(得分:0)