多种方法统计每户人数,年底了,快来学一种吧!

同学们,大家好。今天要分享的还是统计每户人数的问题,只不过不是在合并单元格中统计。因为群里问这种问题的小伙伴还是挺多的,所以今天我就来总结一下各种方法(当然是我能想到的)。先来看下数据源和统计后的效果。AB两列是数据源,C列是统计后的效果,只在户主那里写出对应的人数。

第1种,首先来说我最喜欢的公式,当然要用到frequency函数。在C2单元格输入公式=TEXT(INDEX(FREQUENCY(-ROW($2:$19),-(B$2:B$21="户主")*ROW($2:$19)),ROW(A1)),"0;;"),向下填充,完成。

=FREQUENCY(-ROW($2:$19),-(B$2:B$21="户主")*ROW($2:$19))这部分返回的结果如下图D列所示,可以看到和户主对应的正好是每户的人数,不是户主的对应0。所以,我们用index提取出每个元素,最后用text将非0的数字显示为它本身,将0显示为空文本。

其他的方法,我只把公式写出来,然后说下大概的思路。具体地,大家可以下载文件自己查看。

第2种,在E2单元格输入公式=IF(B2="户主",IFERROR(MATCH(B2,B3:B$19,),ROWS(B2:B$19)),""),向下填充,完成。这种方法主要用到match函数,错位查找到下一个户主的位置,就是当前户主的家庭人数。但是到了最后一户会出现问题,因为它找不到下一户,所以要用到iferror来容错。最外层用if函数来判断,如果B2单元格是户主,那么就返回对应的人数,也就是我们的公式,否则返回空文本。

第3种,在F2单元格输入公式=IF(B2="户主",MATCH(1,FREQUENCY(1,N(B3:B$19="户主")),),""),向下填充,完成。这个公式用到frequency函数,其实查找的思路和第2种的match差不多,都是错位查找下一个户主的位置。只不过frequency在最后一户的时候可以计算正确。

第4种,在G2单元格输入公式=IF(B2="户主",MATCH(1,FREQUENCY(1,N(G3:G$19<>"")),),""),向下填充,完成。这个公式和第3种思路差不多。

第5种,在H2单元格输入公式=IF(B2="户主",ROWS(B2:B$19)-SUM(H3:H$20),""),向下填充,完成。这个公式的思路和合并单元格计数的公式差不多,也就是counta(B2:B$19)-sum(H3:H$20)这个公式。这里我用rows代替counta。

第6种,在I2单元格输入公式=IF(B2="户主",SUM(SMALL(IF(B$2:B$19="户主",ROW($2:$19),20),COUNTIF(B$2:B2,B2)+{1;0})*{1;-1}),""),按ctrl+shift+enter三键结束,向下填充,完成。这个公式的思路是用下一个户主所在的行号减去当前户主所在的行号就是当前户主的家庭人数。由于最后一户找不到下一户的行号,所以在if返回行号的时候,如果不等于户主的返回20,也就是最后1行的下一行行号。

第7种,在J2单元格输入公式=IF(B2="户主",SUMPRODUCT(N(COUNTIF(OFFSET(B$2,,,ROW($2:$19)-1),"户主")=COUNTIF(B$2:B2,"户主"))),""),向下填充,完成。这个公式用的是多维引用。大概的思路是将每一户的成员进行编号,比如第1户的所有成员编号为1,第2户的所有成员编号为2。。。以此类推。然后统计1的个数就是第1户的人数,2的个数就是第2户的人数。

这里有个问题还需要说一下,上面的有些公式会产生循环引用,但是最后的结果好像没有影响,不知什么原因。这些是我目前能想到的几种方法,相信还有其他很多方法,大家也可以自己想一下,想到其他方法也希望可以给我留言。

文件链接:

https://pan.baidu.com/s/1_4PBeP1eEmtsQCuBYlRA4Q

提取码:0w0y

(0)

相关推荐