【问题标题】:count distinct values in spreadsheet计算电子表格中的不同值
【发布时间】:2013-01-01 02:21:46
【问题描述】:

我有一个 Google 电子表格,其中有一列如下所示:

City
----
London
Paris
London
Berlin
Rome
Paris

我想计算每个不同城市的出现次数(所以我需要城市名称和出现次数)。

City   | Count
-------+------
London |  2
Paris  |  2
Berlin |  1
Rome   |  1

我该怎么做?

【问题讨论】:

  • 删除了我的答案,因为我无法创建一个工作示例。我建议看看 IF()COUNTIF() 的组合

标签: count google-sheets distinct


【解决方案1】:

Link to Working Examples

解决方案 0

这可以使用数据透视表来完成。

解决方案 1

使用unique 公式获取所有不同的值。然后使用countif 获取每个值的计数。请参阅顶部的工作示例链接以了解其具体实现方式。

Unique Values        Count
=UNIQUE(A3:A8)       =COUNTIF(A3:A8;B3)
                     =COUNTIF(A3:A8;B4)
                     ...

解决方案 2

如果您这样设置数据:

City    
----    
London   1
Paris    1
London   1
Berlin   1
Rome     1
Paris    1

那么下面会产生想要的结果。

=sort(transpose(query(A3:B8,"Select sum(B) pivot (A)")),2,FALSE)

我确信有办法摆脱第二列,因为所有值都是 1。我认为这不是一个理想的解决方案。

通过http://googledocsforlife.blogspot.com/2011/12/counting-unique-values-of-data-set.html

其他可能有用的链接

【讨论】:

  • 那行得通。谢谢。有趣的是,我已经在另一组中应用了第二种解决方案,但在这里没有想到。
  • 对于解决方案 2:您可以将 B 列留空,然后使用“count”而不是“sum”: =sort(transpose(query(A3:B8,"Select count(B) pivot (A )")),2,FALSE)
  • ...但是如何创建数据透视表?虽然这个答案看起来很棒而且很详细,但 dnlbrky 更直接的答案是拯救了我的答案。在这里,我什至没有注意到给出的更简单的替代 1 和 2 解决方案。太糟糕了:(
  • @Balmipour Data > Pivot Table > 然后复制屏幕截图。
  • 在您发表评论后才回到这里。我没有猜到“Pivot tables”的法语是“tableaux croisés dynamiques”。我想那天我可以搜索得更好一些,但至少,知道菜单选项就在“数据”中,让我能够找到它。
【解决方案2】:

您可以使用query 函数,因此如果您的数据位于第一行是列标题的col A 中...

=query(A2:A,"select A, count(A) where A != '' group by A order by count(A) desc label A 'City'", 0)

产量

City    count 
London  2
Paris   2
Berlin  1
Rome    1

链接到有效的 Google 表格。

https://docs.google.com/spreadsheets/d/1N5xw8-YP2GEPYOaRkX8iRA6DoeRXI86OkfuYxwXUCbc/edit#gid=0

【讨论】:

  • 这种技术效果很好,在我的特殊情况下更容易应用。然而,奇怪的是,如果要计算的列中有多个不同的数值,查询似乎会中断(即它不会输出任何内容)。不过,当我将数值转换为它们的字符串等价物时,它就起作用了。
  • @MattV。我尝试将不同的数值添加到正在计算的列中,并且查询工作得很好。 docs.google.com/spreadsheets/d/…
  • 要标记其他列,请准确重复它们的定义。在此示例中:label A 'City', count(A) 'Total'
【解决方案3】:

=iferror(counta(unique(A1:A100))) 计算从 A1 到 A100 的唯一单元格的数量

【讨论】:

  • 你能解释一下这种情况下iferror()的作用吗? counta(unique(A1:A100)) 给了我想要的结果。
  • OP 并没有要求计算唯一值,但如果您确实需要,那么您可以使用 =COUNTUNIQUE(A:A) 来简化它
【解决方案4】:

不完全是用户的要求,而是一种计算唯一值的简单方法:

Google 推出了 new function 只需一步即可计算唯一值,您可以将其用作其他公式的输入:

=COUNTUNIQUE(A1:B10)

【讨论】:

  • 这将只返回 1 个数字。唯一值的计数。但是,OP 询问如何计算每个唯一值。
  • @JoshuaDance 你是对的,但操作员的帖子被称为“计算电子表格中的不同值”。对我来说,这看起来像是对这个精确问题的合法答案。请注意,它不会将“空单元格”计为值
  • 如果你们没问题,我现在就离开它。除非太多用户认为这是一个糟糕的答案,否则我将删除它。 @Balmipour
  • 这正是我所需要的。
  • 如果您来自 Google,这是正确的答案
【解决方案5】:

如果您只想计算唯一值的数量,例如以下范围

=counta(unique(B4:B21))

【讨论】:

    【解决方案6】:

    这类似于@JSuar 的解决方案 1...

    假设您的原始城市数据是一个名为dataCity 的命名范围。在新工作表中,输入以下内容:

        A                 | B
      ----------------------------------------------------------
    1 | =UNIQUE(dataCity) | Count
    2 |                   | =DCOUNTA(dataCity,"City",{"City";$A2})
    3 |                   | [copy down the formula above]
    4 |                   | ...
    5 |                   | ...
    

    【讨论】:

      【解决方案7】:

      =UNIQUE({filter(Core!L8:L27,isblank(Core!L8:L27)=false),query(ArrayFormula(countif(Core!L8:L27,Core!L8:L27)),"选择 Col1其中 Col1 0")})

      核心!L8:L27 = 列表

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-15
        • 2014-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多