如何在电子表格中输出最常见的值和该值的出现次数?
有一个列的Values
与一些Strings
,然后显示下面最常见的值和该值的出现次数(即模式的Strings
)。 这是一个例子。
+--------+ | Values | +--------+ | AA | +--------+ | BB | +--------+ | AA | +--------+ | AA | +--------+ | GG | +--------+ | DD | +--------+ | DD | +--------+ | | +-----------------+--------+ | Most Common | AA | +-----------------+--------+ | Number of times | 03 | +-----------------+--------+
这将在Google Spreadsheets中完成! 有小费吗?
对于你的具体例子,让它成为A列,所以你有A1 ='AA',A2 ='BB',…,A7 ='DD'。
要查找最大元素出现的次数,我们要计算每个唯一的元素,然后返回最大计数,因此在一个单元格中使用公式
=MAX(COUNTIF(A1:A7,A1:A7))
这是一个ARRAY公式,所以在Excel中你必须按Ctrl + Shift + Enter来使用它。 要在谷歌电子表格中使用,用ARRAYFORMULA包围它,所以它成为
=ARRAYFORMULA(MAX(COUNTIF(A1:A7,A1:A7)))
说明:内部countif对A1:A7的单元格进行计数,如果它们等于A1:A7中的每个值,并将它们放入一个列表中。 Max返回该列表中的最大值。
现在,为了得到实际的元素,我们有另一个ARRAY公式。 我们可以做一个索引/匹配查找来找出这个值,所以在函数的内部,max查找count值最大的值,然后传递给一个index + match函数来查找原始列表中的值
=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的每个实例replace为数据的实际范围。
这篇文章是有帮助的: http : //www.mrexcel.com/forum/excel-questions/34530-mode-text-strings.html
您可以使用string和计数器创build映射,并在每次出现string时增加计数器。 我不知道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 }
在此之后,您应该循环查找最大的数字,存储其关联的string,并查找与最大数字的string关联的数字。
为了在Google Spreadsheet中实现这个function,上述function无效,而是返回超出范围错误。 我不得不修改一些格式。 这是有效的;
=index(G14:ZZ14;;(MATCH(MAX(COUNTIF(G14:ZZ14,G14:ZZ14)),COUNTIF(G14:ZZ14,G14:ZZ14),0)))
用您的范围replaceG14:ZZ14的5个引用。