Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 从具有动态值的数据集计算每个唯一行的总和_Google Sheets - Fatal编程技术网

Google sheets 从具有动态值的数据集计算每个唯一行的总和

Google sheets 从具有动态值的数据集计算每个唯一行的总和,google-sheets,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

所以我有一个游戏统计数据的电子表格,我想显示一个饼图,上面有一般和每场比赛的胜利百分比

我已经像这样创建了我的主数据表

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
。 这有两个问题

  • 每次添加新游戏时,我都需要复制
    DSUM
    语句(该表仅适用于两名玩家,因此我不需要说明添加新玩家时的情况)
  • 当有两个不同的游戏共享一部分名称时(如“第10阶段”和“第10阶段Brettspiel”),第二个游戏的胜利将计入第一个游戏的胜利
  • 我的陈述是这样的

    DSUM(Data!B1:D100, E1, {"Game";D2})
    
    其中
    Data
    包含第一个表,
    Game
    是包含唯一游戏的列,
    E1
    包含玩家名称

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


    任何帮助都将不胜感激。

    我建议不要使用
    unique
    dsum
    ,而是使用它可以同时完成这两件事。它无需复制粘贴任何公式,因为单个
    查询将执行所有计算。例如,如果您的数据位于a:D中,则查询可能是

    =query(B:D, "select B, sum(C), sum(D) where B <> '' group by B order by B asc", 1)
    
    =查询(B:D,“选择B,求和(C),求和(D),其中B''按B分组,按B asc排序”,1)
    
    这意味着:

    • 将B中每个不同条目的C和D的内容相加
    • 忽略B为空的行
    • 按字母顺序将结果按B排序
    • 范围B:D有1个标题行(由最后一个参数指定,因此不会误认为是数据)
    如果首选结果的其他标题,请使用“标签”,如下所示:

    =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)
    
    =query(B:D,“选择B,求和(C),求和(D),其中B''按B分组按B排序asc标签求和(C)'Player 1',求和(D)'Player 2',1)
    
    我不确定我读的第二个问题是否正确。是否要将“第10阶段”和“第10阶段Brettspiel”计算在一起?我不希望将它们计算在一起。非常有效,谢谢。此外,TIL Sheets具有类似SQL的语言。