Excel中使用函数实现多行去重与多条件去重统计

     分类: office奇技淫巧,个人笔记 发布时间: 2018-12-05 17:53 2,256人浏览

最近一直在折腾Excel,感觉自己都快变成Excel精通了:joy:
现在我们有这么一个表
Excel中使用函数实现多行去重与多条件去重统计插图
想要统计某姓名分类为A的编号数量有多少个怎么办呢?


可以使用这个函数,输入后按ctrl+shift+enter保存为数组形式(两边自动会加上大括号),否则会出错。

=COUNT(1/FREQUENCY(ROW($1:$21),IF($C$2:$C$20<>0,MATCH($C$2:$C$20,$C$2:$C$20,)*($A$2:$A$20="赵")*($B$2:$B$20="A"))))-1

效果如图所示:
Excel中使用函数实现多行去重与多条件去重统计插图1

函数解释如下:

=COUNT(1/FREQUENCY(ROW($1:$21),IF($C$2:$C$20<>0,MATCH($C$2:$C$20,$C$2:$C$20,)*($A$2:$A$20="赵")*($B$2:$B$20="A"))))-1
    ROW()函数:指定对单元格引用的区域,可以比需要选择的区域大,但不能小
    IF()函数:使用<>0,实现去除空行,如果没有这个IF遇到空行则会出错,但是这个IF似乎也会把0去掉
    MATCH()函数:返回指定数值在指定数组区域中的位置,
        在这个语句中前两个参数相同,用于去重,第三个参数默认留空
    *乘号后面的括号用来指定多重条件,
        例如*($A$2:$A$20="赵")则指定筛选A列区域中为“赵”的行

其他字段函数尚未完全理解,还有待研究中……

另外如果不需要设定筛选条件,只需要实现去重统计,则可以使用函数:

=SUM(IF(C2:D20<>0,1/COUNTIF(C2:D20,C2:D20)))

效果如下图:
Excel中使用函数实现多行去重与多条件去重统计插图2
这个函数可以实现一个区域内的去重统计(上一个函数暂时不可以)

函数解释如下:

=SUM(IF(C2:D20<>0,1/COUNTIF(C2:D20,C2:D20)))
    SUM()函数:普通的求和函数
    IF()函数:依然是实现去除空行
    COUNTIF()函数:定义是符合条件的情况下计数,前一个参数是定义区域,后一个参数是条件
        前面参数为需要判断是否重复的项,后参数为已知的重复值,
        对每一行都使用COUNTIF()函数,不为0的那一行即为存在重复值。
        用这个方法可以统计多列中的重复值,而不会被单列中自己的重复值影响。

参考链接:
请教:怎样统计自动筛选后的某一区域不重复的单元格的个数?
excel 多条件去重计数公式
Excel数据筛选去重然后统计的多条件函数。


上一篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注