新方法:用mode函数在合并单元格中计数
小伙伴们,你还好吗?今天来分享下如何在合并单元格中计数,这个问题在前面的文章中也说过好几种方法了。今天来学习一种新方法,是我在论坛里见到的。在这里要感谢论坛的各位前辈老师,让我学习和见识了很多方法和思路,扩大了我对一些函数的认知。主要用到的函数是mode,它返回一组数据中出现频率最高的数。来看下数据源和结果吧。
1.统计每组有多少人?
下图ABC3列是数据源,在D列的合并单元格中统计每组的人数。其实就是个合并单元格计数的问题,只解决这个问题,我相信你也会很多办法。但我们还是要学一下今天的方法,为以后更复杂的问题打基础。由于合并单元格公式不能下拉填充,所以要选中D3:D21,输入公式=ROUND(MODE(ROW($1:$10)-(A4:B13=0)%),),按ctrl+enter完成。
我们一个单元格一个单元格的来看这个公式,首先是D3单元格,公式就是上面的公式。先来看(A4:B13=0)%这部分,它返回的结果如下图绿色所示,就是判断A4:B13是否等于0,等于的返回true,不等于的返回false。true就相当于1,false相当于0。后面加个百分号,就是1%和0%。
=ROW($1:$10)-(A4:B13=0)%这部分返回的结果如下图绿色所示,用ROW($1:$10)减去上一步的结果。其中相减的2部分的行数要一样,都是10行。接下来就是mode返回这个数组中出现频率最多的数,这里出现次数最多的是4和7,但mode只取第1个出现次数最多的数4。而这个4就是第1组的人数。大家细看的话,其实就是从A4单元格开始到下一个非空单元格之间的单元格个数,也就是A4:A7的单元格个数。
接下来D7单元格的公式为=ROUND(MODE(ROW($1:$10)-(A8:B17=0)%),)。其中=ROW($1:$10)-(A8:B17=0)%返回的结果如下图绿色部分所示,大家看不明白可以分步查看。然后就是用mode返回第1个出现次数最多的数3,同样相当于A8:A10的单元格个数。你可能会问round是干什么用的?其实它的作用在于最后一个单元格。
其他中间单元格的公式,大家自己查看,和前面的没什么区别。说一下最后一个单元格D17,公式为=ROUND(MODE(ROW($1:$10)-(A18:B27=0)%),)。
先来看(A18:B27=0)%这部分,返回的结果如下图绿色所示。从A18往下没有非空单元格了,A22单元格是空单元格,所以对应的结果0.01,之前的时候都是0。
=ROW($1:$10)-(A18:B27=0)%这部分返回的结果如下图绿色所示,A22单元格对应的结果是4.99,B22单元格对应的结果也是4.99,所以mode返回的结果还是4.99,但我们要的应该是5,所以用round四舍五入将4.99变为5。此时相当于得到A18:A22的单元格个数。
这个公式的好处就是不用选择整个区域,只要选择的区域行数大于各组的最大人数就可以了。比如,这里我选择的行数ROW($1:$10)是10行,而各组的最大人数是6。当数据量足够多时,就能看出它的好处,运算速度比引用整个区域会快很多。
文件链接:
https://pan.baidu.com/s/1EVUYNFEaOsXNedFrPm5Vyg
提取码:bf8h