[已解决] 新人求助,如何求每日平均工作员工数

  [复制链接]
查看267978 | 回复188 | 2021-2-18 22:39:01 | 显示全部楼层 |阅读模式
大家好,我有一份每日工作记录表,求得每日平均工作人数
逻辑就是每个日期号中提交人员计数的不重复数值
日期提交人员2018年12月1日A2018年12月1日B2018年12月1日A2018年12月1日A2018年12月1日C2018年12月1日A2018年12月1日B2018年12月1日D2018年12月1日G2018年12月1日D2018年12月1日B2018年12月1日C2018年12月1日B2018年12月1日Y2018年12月1日C2018年12月1日I2018年12月1日D2018年12月2日C2018年12月2日A2018年12月2日D2018年12月2日A2018年12月2日B2018年12月2日A2018年12月2日D2018年12月2日G
回复

使用道具 举报

tez999 | 2021-2-18 22:45:01 | 显示全部楼层
先去重复然后分组计数、
回复

使用道具 举报

wangaimin007 | 2021-2-18 22:51:02 | 显示全部楼层
  1. Dim conn As New ADODB.Connection

  2. conn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName

  3. Range("d2").CopyFromRecordset conn.Execute("select 日期,count(提交人员) from (select DISTINCT * from [sheet1$]) group by 日期;")

  4. conn.Close: Set conn = Nothing

复制代码
回复

使用道具 举报

xyp87 | 2021-2-18 22:55:02 | 显示全部楼层
能说明一下吗
回复

使用道具 举报

littletree | 2021-2-18 23:00:02 | 显示全部楼层
能说明一下吗


Dim conn As New ADODB.Connection
'ado连接,先要对ado进行引用,编程界面--工具--引用--选中某ado--确定。
conn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName
'打开与自己工作簿的连接,也就是ado访问自己,HDR=yes,第一行是标题
Range("d2").CopyFromRecordset conn.Execute("select 日期,count(提交人员) from (select DISTINCT * from [sheet1$]) group by 日期;")
'这是关键一句:将ado查询的结果复制到以d2单元格为起点的单元格区域。
"select 日期,count(提交人员) from (select DISTINCT * from [sheet1$]) group by 日期;"这是查询语句
select DISTINCT * from [sheet1$]去掉重复,同时又作为外查询的数据源
整句的意思:无重复的以日期分组,统计提交人员的人数
conn.Close: Set conn = Nothing
关闭连接。
将成品文件发给你。
回复

使用道具 举报

新界一只牛 | 2021-2-18 23:06:02 | 显示全部楼层
Dim conn As New ADODB.Connection
'ado连接,先要对ado进行引用,编程界面--工具--引用--选中某ado-- ...


非常感谢,我梳理一下逻辑
回复

使用道具 举报

yankai | 2021-2-18 23:13:03 | 显示全部楼层
能说明一下吗


Dim conn As New ADODB.Connection
'ado连接,先要对ado进行引用,编程界面--工具--引用--选中某ado--确定。
conn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;HDR=yes';data source=" & ThisWorkbook.FullName
'打开与自己工作簿的连接,也就是ado访问自己,HDR=yes,第一行是标题
Range("d2").CopyFromRecordset conn.Execute("select 日期,count(提交人员) from (select DISTINCT * from [sheet1$]) group by 日期;")
'这是关键一句:将ado查询的结果复制到以d2单元格为起点的单元格区域。
"select 日期,count(提交人员) from (select DISTINCT * from [sheet1$]) group by 日期;"这是查询语句
select DISTINCT * from [sheet1$]去掉重复,同时又作为外查询的数据源
整句的意思:无重复的以日期分组,统计提交人员的人数
conn.Close: Set conn = Nothing
关闭连接。
将成品文件发给你。

11064111814361.rar (13.72 KB, 下载次数: 0)
回复

使用道具 举报

银欧SRV | 2021-2-18 23:15:03 | 显示全部楼层
Dim conn As New ADODB.Connection
'ado连接,先要对ado进行引用,编程界面--工具--引用--选中某ado-- ...


您好,可以通过POWER BI里的度量值或者新建列直接实现吗,因为每天记录数据量较大
回复

使用道具 举报

zq123q | 2021-2-18 23:21:03 | 显示全部楼层
可以,是最佳方案。
回复

使用道具 举报

着迷 | 2021-2-18 23:24:03 | 显示全部楼层
具体操作:不打开被统计的工作簿
数据→新建查询→从文件、从工作簿→记数(被统计工作簿)→sheet1→编辑→将第1列转换为日期→分组依据→选日期、非重复行计数→确定→关闭并上载。
就在一张新的工作表里有查询结果了,以后只要原工作簿的数据有变化,只要在查询表里更新数据就可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则