计算电子表格中的不同值

Posted

技术标签:

【中文标题】计算电子表格中的不同值【英文标题】: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() 的组合 【参考方案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

其他可能有用的链接

http://productforums.google.com/forum/#!topic/docs/a5qFC4pFZJ8

【讨论】:

那行得通。谢谢。有趣的是,我已经在另一组中应用了第二种解决方案,但在这里没有想到。 对于解决方案 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 = 列表

【讨论】:

以上是关于计算电子表格中的不同值的主要内容,如果未能解决你的问题,请参考以下文章

根据谷歌电子表格中的行和列条件计算值

如何根据单元格的所有可能值保存多个电子表格?

带有多个值的单元格的 Microsoft Excel 电子表格筛选器

基于单个单元格值的 Google 电子表格中的重复行

计算电子表格中的小计行

在 Google Docs 电子表格的列中计算具有任何值(字符串或数字)的单元格数