【问题标题】:How to output the most common value and the number of occurrences of that value in spreadsheet?如何在电子表格中输出最常见的值和该值的出现次数?
【发布时间】:2013-08-06 01:00:05
【问题描述】:

有一列Values 有多个Strings,然后在下面显示最常见的值和该值的出现次数(即Strings 的模式)。这是一个例子。

+--------+
| Values |
+--------+
|   AA   |
+--------+
|   BB   |
+--------+
|   AA   |
+--------+
|   AA   |
+--------+
|   GG   |
+--------+
|   DD   |
+--------+
|   DD   |
+--------+
|        |
+-----------------+--------+
|   Most Common   |   AA   |
+-----------------+--------+
| Number of times |   03   |
+-----------------+--------+

这将在 Google 电子表格中完成! 有什么建议吗?

【问题讨论】:

标签: string excel text google-sheets


【解决方案1】:

对于您的具体示例,将其设为 A 列,因此您有 A1='AA', A2='BB',...,A7='DD'。

要找到最大元素出现的次数,我们要计算每个唯一元素,然后返回最大计数,因此在单元格中使用公式

=MAX(COUNTIF(A1:A7,A1:A7))

这是一个 ARRAY 公式,因此在 excel 中您必须按 Ctrl+Shift+Enter 才能使用它。要在 google 电子表格中使用,请用 ARRAYFORMULA 将其包围,使其变为

=ARRAYFORMULA(MAX(COUNTIF(A1:A7,A1:A7)))

解释:内部 countif 计算 A1:A7 的单元格,如果它们等于 A1:A7 中的每个值,并将它们放入列表中。 Max 返回该列表中的最大值。

现在,要获取实际元素,我们还有另一个 ARRAY 公式。我们可以进行索引/匹配查找来找出值,因此在函数内部,max 找到计数最多的值,然后将其传递给索引+匹配函数以查找原始列表中的值

=INDEX(A1:A7,MATCH(MAX(COUNTIF(A1:A7,A1:A7)),COUNTIF(A1:A7,A1:A7),0))

对于谷歌电子表格也是如此

=ARRAYFORMULA(INDEX(A1:A7,MATCH(MAX(COUNTIF(A1:A7,A1:A7)),COUNTIF(A1:A7,A1:A7),0)))

您将 A1:A7 的每个实例替换为您的数据的实际范围。

这篇文章很有帮助: http://www.mrexcel.com/forum/excel-questions/34530-mode-text-strings.html

【讨论】:

  • 好人!这正是我正在搜索的内容,要在 Google SpreadSheet 中工作,只需使用 ARRAYFORMULA() 将您的公式包围起来,然后取出 INDEXMAX= char
  • 他们是否更改了 Google 电子表格?此解决方案不适用于我
【解决方案2】:

您可以创建一个包含字符串和计数器的映射,并在每次出现该字符串时递增计数器。我不知道 java 脚本,但类似下面的 sudocode 应该可以计算出现次数:

Dictionary<string, int> _map;

foreach(cell in sheet.cells)
{
    if(_map.contains(cell.value) ==  FALSE)
    {
        _map.add(cell.value)
    {
    _map.item(cell.value) += 1 // increment number of occurrences 
}

在这之后你应该循环找到最大的数字,存储它的关联字符串并找到与最大数字的字符串关联的数字。

【讨论】:

    【解决方案3】:

    要在 Google 电子表格中使用此功能,上述方法不起作用,而是返回超出范围错误。我不得不稍微修改一下格式。这是有效的;

    =index(G14:ZZ14;;(MATCH(MAX(COUNTIF(G14:ZZ14,G14:ZZ14)),COUNTIF(G14:ZZ14,G14:ZZ14),0)))
    

    用你的范围替换对 G14:ZZ14 的 5 个引用。

    【讨论】:

    • 两个分号是干什么用的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多