提问人:pball 提问时间:9/7/2023 最后编辑:pball 更新时间:9/7/2023 访问量:64
计算谷歌电子表格中的对数、三胞胎等
Count number of pairs, triplets, etc in a google spreadsheet
问:
如果我在谷歌电子表格中有如下列表,我如何计算列表中有多少对、三胞胎等?配对计数将仅计算成对,而不计算三胞胎或更高组。
apple
orange
pear
orange
apple
pear
orange
结果将给出 2 对计数和 1 三元组计数。
我想在单个单元格中使用公式来实现此目的,而无需使用其他单元格进行中间步骤。这是一个工作表的链接,显示了我想要的最终结果,但使用了不需要的中间步骤。
https://docs.google.com/spreadsheets/d/1yVFYH226cebOu-adt-e_2VQnULdxWZKOWOnB4fK2OCc/edit?usp=sharing
答:
1赞
Harun24hr
9/7/2023
#1
对于对数-
=COUNTIFS(QUERY(QUERY(A1:A7,"select A, count(A) group by A label count(A) ''"),"select Col2"),"2")& " Pairs"
对于三重计数-
=COUNTIFS(QUERY(QUERY(A1:A7,"select A, count(A) group by A label count(A) ''"),"select Col2"),"3")& " Triple"
替代配方-
=COUNTIFS(CHOOSECOLS(UNIQUE(HSTACK(A1:A7,INDEX(COUNTIFS(A1:A7,A1:A7)))),2),"2") & " Pairs"
=COUNTIFS(CHOOSECOLS(UNIQUE(HSTACK(A1:A7,INDEX(COUNTIFS(A1:A7,A1:A7)))),2),"3") & " Triples"
评论
0赞
Félix Adriyel Gagnon-Grenier
9/7/2023
那么,是否需要对每个数字都这样做呢?如果我们事先不知道会有多少重复项,比如 23 个,该怎么办。
0赞
Harun24hr
9/7/2023
@FélixAdriyelGagnon-Grenier 问题是尾随词,例如:否则,您可以用一个公式来计算它们。但是你不能把这些词放在一个公式中。pairs, triples.....
0赞
Harun24hr
9/7/2023
试一试——=QUERY(QUERY(A1:A7,"select A, count(A) group by A label count(A) ''"), "select Col2, count(Col2) group by Col2 label Col2 'Count', count(Col2) 'Pair Count'")
1赞
pball
9/7/2023
谢谢@Harun24hr,我只尝试了第一个解决方案,但这符合我的需求。我所要做的就是弄清楚,如果我的数据集在 D 列中,那么 A 的所有实例都需要替换为 D。
1赞
pball
9/9/2023
我在这篇文章中给出的第一个解决方案中发现了一个“问题”,即它是区分大小写的,当然我没有将不区分大小写作为要求,这是一个使用 lower() 的简单修复方法,示例如下。=COUNTIFS(QUERY(QUERY(A1:A,"select lower(A), count(A) group by lower(A) label count(A) ''"),"select Col2"),"2")& " Pairs"
2赞
The God of Biscuits
9/7/2023
#2
这是一个更紧凑的答案,它在单个公式中给出了重复计数,原则上可以扩展到任意数量的重复:
=arrayformula(countif(countif(A1:A,A1:A),{2;3})/{2;3}&" "&{"pair(s)";"triplet(s)"})
内部 COUNTIF 计算列表中每个项目的出现次数;由于列表包含重复项,因此也会复制项计数。外部 COUNTIF “计数”,即“有多少个项目计数为 2?,有多少个项目计数为 3?,依此类推”。 根据定义,这些必须是复制因子的倍数,例如有 2n 对,3n 次一式三份。因此,将外部 COUNTIF 结果除以 2 或 3 以给出对数或一式三份的数目,然后进行一些数组字符串操作以在数字后添加适当的文本。只需扩展数组文本,即可扩展到任意复制级别。例如,包括一式四份:
=arrayformula(countif(countif(A1:A,A1:A),{2;3;4})/{2;3;4}&" "&{"pair(s)";"triplet(s)";"quadruplicate(s)"})
评论
0赞
pball
9/9/2023
感谢您分享另一种执行此操作的方法。这种方法帮助我找出了发布的另一个解决方案,即区分大小写,我想要一个不区分大小写的解决方案。有没有办法编辑这个公式,以便它只给出一个单元格中一个公式的对数,以及另一个单元格中另一个公式的三元组数?我希望不同单元格中的阀门不像这个公式那样自动生成。
评论
countif