使用动态值计算数据集中每个唯一行的总和

时间:2017-01-07 18:43:27

标签: google-sheets

所以我有一个带有游戏统计数据的电子表格,我希望显示一个总体和每场比赛获胜百分比的饼图。

我已经创建了我的主数据表

Date     | Game   | Player 1 | Player 2
---------|--------|----------|----------
01.01.17 | Game 1 |        1 |        0
02.01.17 | Game 2 |        0 |        1
03.01.17 | Game 2 |      0.5 |      0.5

现在计算每位玩家的胜利总和很容易。但是每场比赛产生它并不是那么直截了当。 现在我有一个第二个表,其中计算正在发生,表格如下所示:

Game   | Player 1 | Player 2
-------|----------|----------
Game 1 |        1 |        0
Game 2 |      0.5 |      1.5

我使用UNIQUE作为游戏列表,并使用DSUM作为每个单元格。 这有两个问题。

  1. 每次添加新游戏时我都需要复制DSUM声明(工作表只适用于两个玩家,所以我不需要在添加新游戏时覆盖案例)
  2. 当有两个不同的游戏分享名称的一部分时(例如"第10阶段和第34阶段;"第10阶段Brettspiel"第二个游戏的胜利确实计入胜利第一场比赛
  3. 我的陈述看起来像这样

    DSUM(Data!B1:D100, E1, {"Game";D2})
    

    其中Data包含第一个表格,Game是包含唯一游戏的列,E1包含玩家名称。

    第一个问题实际上并不严重,但我想解决第二个问题。我对Google表格没有多少经验,这就是为什么我想用纯表格命令而不是自定义脚本来解决这个问题。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

而不是uniquedsum,我建议使用query,它可以同时执行这两项操作。它消除了复制粘贴任何公式的需要,因为单个query执行所有计算。例如,如果您的数据位于A:D中,则查询可以是

=query(B:D, "select B, sum(C), sum(D) where B <> '' group by B order by B asc", 1)

表示:

  • 为B
  • 中的每个不同条目添加C和D的内容
  • 忽略B为空的行
  • 按字母顺序按B排序结果
  • 范围B:D有1个标题行(由最后一个参数指定,所以它没有被误认为数据)

如果首选其他标题,请使用“label”,如下所示:

=query(B:D, "select B, sum(C), sum(D) where B <> '' group by B order by B asc label sum(C) 'Player 1', sum(D) 'Player 2'", 1)