代码之家  ›  专栏  ›  技术社区  ›  franciscofcosta

在Google表单上使用SUM对IF公式进行排名

  •  0
  • franciscofcosta  · 技术社区  · 7 年前

    我正在尝试从数据库中创建一个汇总数字的排名。 该数据库有一份特定国家公司的个人办事处列表(编号1-10)。在某些情况下,同一家公司位于多个国家。 A列中列出了国家;公司位于B列;办公室位于C列。

    每个办公室都有一个分数。Office分数在数据库的D列中。

    我想根据公司在每个国家的总分创建一个公司排名。公司在每个国家的总分是同一公司在同一国家的所有办事处的总分。

    为了建立这样的排名,必须:

    1-获得公司在每个国家的总分。我使用 SUMIFS 作用这是我用来计算这个分数的函数: =SUMIFS($D$2:$D, $A$2:$A, $A2, $B$2:$B, $B2) 。这是在数据库的E列中计算的。

    2-仅针对位于同一国家的公司,将其与其他公司在每个国家的总分列表进行排名。

    我在定义 RANK 并且了解到使用这样的函数是不可能做到这一点的。对步骤1中计算的值进行排名的范围也需要是一个条件和-我们正在排名的办事处所在国家的所有分数之和。如何做到这一点?

    在做了一些研究之后,我尝试了以下解决方案: SUMPRODUCT COUNTIFS 但都没有达到预期的效果。我该怎么做?

    我创建了一个 sample shee 这可能有助于理解问题 here

    非常感谢。

    3 回复  |  直到 7 年前
        1
  •  2
  •   Liora Haydont    7 年前

    如果您想对它们进行排名,首先必须找到当前国家的所有值并进行排序。
    像@|'-'|,我使用了一个查询:

    =QUERY($A$2:$E;"select E WHERE A="&A2&" ORDER BY E DESC")
    

    由于同一数字可以重复出现两次,因此需要添加 UNIQUE 围绕这一点。要小心,如果两家公司得分相同,他们的排名也会相同。

    =UNIQUE(QUERY($A$2:$E;"select E WHERE A="&A2&" ORDER BY E DESC"))
    

    这将返回范围,从最大到最小排序。现在,您只需使用match函数获取当前分数的索引。

    =MATCH(E2;UNIQUE(QUERY($A$2:$E;"select E WHERE A="&A2&" ORDER BY E DESC"));0)
    
        2
  •  0
  •   TheMaster    7 年前

    这可能有助于:

    =query(A:D,"Select A,B,sum(D) group by A,B order by A,sum(D) desc")
    

    它不排序,但按降序排列总和。

        3
  •  0
  •   Samuel A Hartpence    5 年前

    根据筛选的范围对所选内容进行排序。示例:

    =等级(C2,过滤器(C$2:$C$71,F$2:$F$71=F2),1)

    只有当f2中的值:f72等于f2中的值时,才会对c2中的值进行排名(这将以最低的排名对最低的值进行排名