ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

(原创)多工作表两(多)条件计数 - COUNTIFS函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-4-28 21:53 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
   论坛里有很多针对多工作表单条件进行计数要求通过公式来实现的求助主题,该方面的主题通常可以借助公式:SUMPRODUCT+COUNTIF+INDIRECT 或:数组公式:SUM+COUNTIF+INDIRECT 来很好的实现,也可以通过:数据透视表 - 多重合并计算数据区域 来实现。
    可是对于多工作表双条件或更多条件计数时,就不能借助上面两种方式来实现,一般需借助VBASQL语句来实现。但VBASQL语句对于大部分E菜鸟们还是有点高深。
现在介绍通过EXCEL 2007新增加的COUNTIFS 函数来实现。
    具体下
    三张原始数据源工作表,分别为:数学、物理、化学。
工作表:数学 部分数据为:
学校班级姓名竞赛成绩
十一中0701王敏欣98
十一中0701张旭90
十一中0701刘政92
十二中0701高璐89
十二中0701戴娇95
十二中0702杨越94
十二中0702杨娜85
十三中0701李超88
十三中0701王水雯89
十三中0701吴明周90
十三中0701霍文强93
十三中0702刘俊琪96
十三中0702胡温红87

工作表:物理 部分数据为:
学校班级姓名竞赛成绩
十一中0701王敏欣97
十一中0701张旭89
十一中0701窦浩真91
十二中0701张娟76
十二中0701高璐88
十二中0701戴娇94
十二中0702杨越93
十二中0702杨娜84
十二中0702马琴86
十二中0702高磊94
十二中0702张世豪90
十二中0703邬轶芳95
十二中0703郭智78
十三中0701梁欣悦87
十三中0701刘荣89

工作表:化学 部分数据为:
学校班级姓名竞赛成绩
十一中0706张恒100
十一中0706李晴100
十三中0706王娜大100
十一中0705姚璐99
十二中0703薄宜书98
十一中0702许文强97
十一中0704隗高鸣97
十二中0705郝秀玲97
十三中0702刘俊琪97
十三中0704郭娜97
十一中0705高凯96
十一中0701孙悦95

如果只针对单条件:“学校”进行对多工作表参考人数统计时,这可以用公式(也是论坛已有的解法):
公式为:
  1. =SUMPRODUCT(COUNTIF(INDIRECT({"数学";"化学";"物理"}&"!A:A"),A2))
复制代码
或公式:
  1. =SUM(COUNTIF(INDIRECT({"数学";"化学";"物理"}&"!A:A"),A2))
复制代码
同时也可以通过:数据透视表 - 多重合并计算数据区域:具体见可以视操作(在EXCEL 2007里可以通过依次按:ALT键、D键、P键,即可把 数据透视表和数据透视图向导 调出来)

   可是对于双条件:“学校”及“班级”进行进行对多工作表参考人数统计时,借助 COUNTIF 函数是实现不了,一般需借助VBA(暂没列出)或SQL语句(具体见附件工作表:“年级班级双条件汇总SQL”的效果)来实现。但VBASQL语句对于大部分E菜鸟们还是有点高深。
SQL语句为:


  1. select 学校,班级,count(姓名) as 参考人数 from
  2. (select * from [数学$A2:C100] union all select * from [物理$A2:C100] union all select * from [化学$A2:C100])
  3. group by 学校,班级
复制代码

    幸运的是,在EXCEL 2007版本新增了的 COUNTIFS 函数可以帮我们解决这个问题:
公式:
  1. =SUMPRODUCT(COUNTIFS(INDIRECT({"数学";"化学";"物理"}&"!A:A"),A2,INDIRECT({"数学";"化学";"物理"}&"!B:B"),B2))
复制代码
或公式:
  1. =SUM(COUNTIFS(INDIRECT({"数学";"化学";"物理"}&"!A:A"),A2,INDIRECT({"数学";"化学";"物理"}&"!B:B"),B2))
复制代码

继续追溯:
可想而知,如果三个条件或更多的条件进行多工作表计数统计时,只需在条件区域增加相应的条件即可(此不再举例)。





该贴已经同步到 dengjq2000的微博
数据透视表+多重.gif

两条件多工作表计数.rar

25.3 KB, 下载次数: 655

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-4-28 22:43 | 显示全部楼层
支持楼主
费心了

TA的精华主题

TA的得分主题

发表于 2014-4-29 08:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
方法多样,值得推广。

TA的精华主题

TA的得分主题

发表于 2014-6-12 22:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-6-12 23:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-10-3 21:56 | 显示全部楼层
=SUMPRODUCT(COUNTIFS(INDIRECT({"数学";"化学";"物理"}&"!A:A"),A2,INDIRECT({"数学";"化学";"物理"}&"!B:B"),B2))
这里的indirect引用好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-1-15 14:33 | 显示全部楼层
如果原始数据工作表有规律,那公式就相对更好处理了。
像主楼的附件的三个原始工作表表名分别为:Sheet1、Sheet2、Sheet3,则多工作表单条件公式为(具体见工作表 “年级单条件计数”):
  1. =SUMPRODUCT(COUNTIF(INDIRECT("Sheet"&ROW($1:$3)&"!A:A"),A2))
复制代码
或数组公式:
  1. =SUM(COUNTIF(INDIRECT("Sheet"&ROW($1:$3)&"!A:A"),A2))
复制代码
多工作表两条件或多条件公式为(具体见工作表 “年级班级双条件汇总”):
  1. =SUMPRODUCT(COUNTIFS(INDIRECT("Sheet"&ROW($1:$3)&"!A:A"),A2,INDIRECT("Sheet"&ROW($1:$3)&"!B:B"),B2))
复制代码

多工作表两条件计数.zip

18.11 KB, 下载次数: 179

TA的精华主题

TA的得分主题

发表于 2015-3-29 19:11 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-3-29 19:36 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-7-19 20:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个不错,受教了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-26 00:26 , Processed in 0.039145 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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