计算电子表格中的不同值


84

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

City
----
London
Paris
London
Berlin
Rome
Paris

我想统计每个不同城市的外观(因此我需要城市名称和出现次数)。

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

我怎么做?


由于无法创建有效的示例,因此删除了我的答案。我建议与IF()COUNTIF()
sascha

Answers:


103

链接到工作示例

解决方案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

其他可能有用的链接


那行得通。谢谢。有趣的是,我已经在另一套解决方案上应用了第二种解决方案,但在这里没有想到。
Marius Bancila

对于解决方案2:您可以将B列留空,然后使用“ count”而不是“ sum”:= sort(transpose(query(A3:B8,“选择count(B)枢轴(A)”))),2,FALSE )
wivku 2014年

...但是如何创建数据透视表?虽然这个答案看起来很好而且很详细,但dnlbrky的答案更直接,那就是拯救了我。在这里,我什至没有注意到给出的-更简单-替代1&2解决方案。太糟糕了:(
Balmipour

1
@Balmipour数据>数据透视表>然后复制屏幕截图。
约书亚舞

发表评论后才回到这里。我没想到法语中的“数据透视表”是“ tableauxcroisésdynamiques”。猜猜那天我本可以进行更好的搜索,但是至少知道菜单选项只是在“数据”中才可以找到它。
Balmipour

25

您可以使用该query函数,因此,如果您的数据位于第一行为列标题的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


该技术效果很好,在我的特定情况下更容易应用。但是,奇怪的是,如果要计数的列中有多个不同的数值,查询似乎会中断(即,不会输出任何内容)。但是,当我将数值转换为它们的等效字符串时,它起作用了。
Matt V.

@MattV。我尝试将不同的数值添加到要计数的列中,并且查询工作正常。 docs.google.com/spreadsheets/d/...
麦克锁存

要标记其他列,请完全重复其定义。在此示例中:label A 'City', count(A) 'Total'
Bryan Roach

21

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


2
您能在这种情况下解释iferror()的功能吗?counta(unique(A1:A100))给了我我想要的结果。
2014年

10
OP并未要求计数唯一值,但如果您希望这样做,则可以使用= COUNTUNIQUE(A:A)
wivku 2014年

6

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

Google引入了一项新功能,只需一步即可计算唯一值,您可以将其用作其他公式的输入:

=COUNTUNIQUE(A1:B10)


1
这将仅返回1个数字。唯一值的计数。但是,OP询问如何计算每个唯一值。
约书亚舞

3
@JoshuaDance您是正确的,但操作员的帖子称为“在电子表格中计数不同的值”。在我看来,这似乎是对这个精确问题的合法答案。只需注意,它不将“空单元格”作为一个值进行计算
-Balmipour

1
如果你们还好,我会暂时保留。除非太多用户发现此答案不正确,否则我将其删除。@Balmipour
Rudolf Real

1
这正是我所需要的。
FellyTone84

6

如果您只想要计数以下范围内的唯一值,则此方法有效

=counta(unique(B4:B21))

0

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

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

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

-3

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

核心!L8:L27 =列表


从我看到的帖子来看,这似乎是截至18年11月15日的最佳答案。Up Vote plz
user3626588
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.