ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6763|回复: 11

[分享] 多条件去重复计数~年终给汇总计数有需要的朋友

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-12-26 21:08 | 显示全部楼层 |阅读模式
本帖最后由 sqrall900 于 2016-12-27 12:57 编辑

数据源在2楼,字数限制。另外除了问题1,附件里还有问题2,3,有兴趣的朋友可以看一下怎么做
                
问题1:              
 计数要求,统计标记列满足条件X的项目不重复个数       
解题思路:              
 对于还比较陌生多条件计数,但是又很想用这个来解决问题的,首先我们来看满足条件的项目到底有哪些:  
 笔者很苦逼的自己点了一下:          
 满足条件的项目:            
 5
6
10
8
9
a
13
14
15
      
 一共有:9个             
 那如果用公式怎么做到把这项目数出来呢         
                
1.首先我们来看我们熟知的条件计数函数:countifs/countif(=COUNTIFS(D6:D20,">"&D22))    
 那我们把公式写上,得到结果:11个         
 很明显和我们自己点的出入很大,不过数据比较少,人工点出来的肯定正确,计算结果是错误的,原因很明显,计数把项目中重复的都算在内了
2.那这时候我们想到了:=sum(1/countif(C6:C20,C6:C20))的去重公式(sumproduct同理),这个公式的原理就是对每一个区域中的元素在区域中进行计数,重复计数的会累加个数,然后用倒数把累加的个数变为“1”
 接下来我们来看看结果:10个          
 然后有手工数了一遍,全部项目中确实是有10个不重复值      
3.聪明的朋友肯定这时候想到了把上面2个公式都用上,看看结果呢?:=SUM(IFERROR(1/COUNTIFS(C6:C20,C6:C20,D6:D20,">"&D22),))
 然后我们继续看看2个公式结合会变成什么样:11个       
 很明显和答案9个还是不一样,大家瞬间觉得无爱了吗?       
4.我们继续想难道是条件要乘在countifs外面?那就试试:=SUM(IFERROR(1/COUNTIFS(C6:C20,C6:C20)*(D6:D20>4),))  
 结果:8个             
5.怎么会变少了呢?            
  那我们把sum里面的数组放到数据源边上比对一下,发现      
   3.公式的第一个,第二个值对应的a,13不在大于4的范围内应该被算为0。    
   4.公式的第12,13个值对应的a,13在大于4的范围内都是第一次出现应该是1   
6.这样一来大家是不是灵光一闪?Bingo!         
 就是这么简单,我们只需要把2个公式结合一下:=SUM(IFERROR(1/COUNTIFS(C6:C20,C6:C20,D6:D20,">"&D22)*(D6:D20>D22),)) 
 
结果:9个
            
 另外还有很多公式同样可以得到正确结果,比如:=SUM((D6:D20>D22)*(ROW(1:15)=MATCH(C6:C20&(D6:D20>D22),C6:C20&(D6:D20>D22),)))
 
结果:9个
            

2016-12-26计数.rar

13.95 KB, 下载次数: 135

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-26 21:10 | 显示全部楼层
附上数据源:
多条件去重复计数:
数据源
项目
标记
a
1
13
2
2
3
2
4
5
5
6
6
10
7
8
8
8
9
10
10
9
11
a
12
13
13
14
14
15
15
   
条件X大于4
条件Y大于9

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-26 22:53 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自己顶一下

TA的精华主题

TA的得分主题

发表于 2016-12-27 10:50 | 显示全部楼层
赞一下,,,,,,,,,,,,,,,,,,

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-27 12:52 | 显示全部楼层
wangling12277 发表于 2016-12-27 10:50
赞一下,,,,,,,,,,,,,,,,,,

希望对他人有帮助吧~~,谢谢回帖

TA的精华主题

TA的得分主题

发表于 2016-12-27 16:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sqrall900 发表于 2016-12-27 12:52
希望对他人有帮助吧~~,谢谢回帖

在  3.COUNTIFS(C6:C20,C6:C20,D6:D20,">"&D22) 公式的第一个,第二个值对应的a,13不在大于4的范围内应该被算为0。为什么算出来会是“1”呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-27 22:19 | 显示全部楼层
本帖最后由 sqrall900 于 2016-12-27 22:20 编辑
fuyunlh 发表于 2016-12-27 16:40
在  3.COUNTIFS(C6:C20,C6:C20,D6:D20,">"&D22) 公式的第一个,第二个值对应的a,13不在大于4的范围内应 ...

这个公式结果就是1,原因就是这个项目号在其他同项目号并且标记大于4的时候有出现过,所以被计数了
如果不明白就把第二个C6:C20用13替换掉看看结果

TA的精华主题

TA的得分主题

发表于 2016-12-28 00:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-12-29 19:18 | 显示全部楼层
sqrall900 发表于 2016-12-27 22:19
这个公式结果就是1,原因就是这个项目号在其他同项目号并且标记大于4的时候有出现过,所以被计数了
如果 ...

好的,谢谢了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-12-31 10:57 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 21:39 , Processed in 0.043451 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表