求助:excel分类汇总

kook 2010-09-02 07:00:50
原始数据如下:

员工A 5/01 迟到5分钟
员工B 5/11 迟到10分钟
员工A 5/15 迟到5分钟
员工A 5/15 迟到5分钟
员工C 5/22 迟到10分钟
员工B 5/23 迟到10分钟
员工A 6/01 迟到15分钟
员工C 6/04 迟到15分钟
员工B 6/12 迟到5分钟
员工C 6/24 迟到15分钟
员工A 6/27 迟到10分钟
员工B 6/28 迟到5分钟
员工A 7/03 迟到15分钟
员工A 7/06 迟到5分钟
员工B 7/09 迟到10分钟
员工A 7/17 迟到5分钟
员工B 7/18 迟到15分钟
员工C 7/21 迟到10分钟


想得到一个按月按员工的统计表,汇总迟到次数(不管迟到几分钟)

希望汇总后格式是这样:

5月份迟到次数 6月份迟到次数 7月份迟到次数
员工A xxx xxx xxx
员工B xxx xxx xxx
员工C xxx xxx xxx


用countif吗?还是什么函数?
谢谢!
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello0302 2010-09-04
  • 打赏
  • 举报
回复
用数据透视表很简单
数据透视结果如下:
计数项:备注 月
员工 5 6 7 总计
员工A 3 2 3 8
员工B 2 2 2 6
员工C 1 2 1 4
总计 6 6 6 18
就是just4 2010-09-02
  • 打赏
  • 举报
回复
:)导入到SQL中处理一下再导出来如何???

DECLARE @tab TABLE(sname VARCHAR(30),sdate VARCHAR(20),sdata VARCHAR(30))

INSERT INTO @tab(sname,sdate,sdata)
select '员工A','5/01','迟到5分钟' union all
select '员工B','5/11','迟到10分钟' union all
select '员工A','5/15','迟到5分钟' union all
select '员工A','5/15','迟到5分钟' union all
select '员工C','5/22','迟到10分钟' union all
select '员工B','5/23','迟到10分钟' union all
select '员工A','6/01','迟到15分钟' union all
select '员工C','6/04','迟到15分钟' union all
select '员工B','6/12','迟到5分钟' union all
select '员工C','6/24','迟到15分钟' union all
select '员工A','6/27','迟到10分钟' union all
select '员工B','6/28','迟到5分钟' union all
select '员工A','7/03','迟到15分钟' union all
select '员工A','7/06','迟到5分钟' union all
select '员工B','7/09','迟到10分钟' union all
select '员工A','7/17','迟到5分钟' union all
select '员工B','7/18','迟到15分钟' union all
select '员工C','7/21','迟到10分钟'

--以下是迟到次数合计
SELECT tt.sname,tt.yy,tt.mm,
ISNULL(CASE tt.mm WHEN 5 THEN COUNT(tt.sdata) END,'') AS '5月',
ISNULL(CASE tt.mm WHEN 6 THEN COUNT(tt.sdata) END,'') AS '6月',
ISNULL(CASE tt.mm WHEN 7 THEN COUNT(tt.sdata) END,'') AS '7月'
FROM (SELECT t.sname,LEFT(t.sdate,PATINDEX('%/%',t.sdate)-1) AS mm,STUFF(t.sdate,1,PATINDEX('%/%',t.sdate),'') AS yy,t.sdata FROM @tab AS t) AS tt
GROUP BY tt.sname,tt.yy,tt.mm

--以下是迟到分钟合计
SELECT tt.sname,tt.yy,tt.mm,
ISNULL(CASE tt.mm WHEN 5 THEN SUM(tt.dd) END,0) AS '5月',
ISNULL(CASE tt.mm WHEN 6 THEN SUM(tt.dd) END,0) AS '6月',
ISNULL(CASE tt.mm WHEN 7 THEN SUM(tt.dd) END,0) AS '7月'
FROM (SELECT t.sname,LEFT(t.sdate,PATINDEX('%/%',t.sdate)-1) AS mm,STUFF(t.sdate,1,PATINDEX('%/%',t.sdate),'') AS yy,CAST(REPLACE(REPLACE(t.sdata,'迟到',''),'分钟','') AS INT) AS dd FROM @tab AS t) AS tt
GROUP BY tt.sname,tt.yy,tt.mm
ORDER BY tt.sname
/*
员工A 01 5 1 0 0
员工A 01 6 0 1 0
员工A 03 7 0 0 1
员工A 06 7 0 0 1
员工A 15 5 2 0 0
员工A 17 7 0 0 1
员工A 27 6 0 1 0
员工B 09 7 0 0 1
员工B 11 5 1 0 0
员工B 12 6 0 1 0
员工B 18 7 0 0 1
员工B 23 5 1 0 0
员工B 28 6 0 1 0
员工C 04 6 0 1 0
员工C 21 7 0 0 1
员工C 22 5 1 0 0
员工C 24 6 0 1 0

员工A 01 5 5 0 0
员工A 01 6 0 15 0
员工A 03 7 0 0 15
员工A 06 7 0 0 5
员工A 15 5 10 0 0
员工A 17 7 0 0 5
员工A 27 6 0 10 0
员工B 09 7 0 0 10
员工B 11 5 10 0 0
员工B 12 6 0 5 0
员工B 18 7 0 0 15
员工B 23 5 10 0 0
员工B 28 6 0 5 0
员工C 04 6 0 15 0
员工C 21 7 0 0 10
员工C 22 5 10 0 0
员工C 24 6 0 15 0
*/
laoyebin 2010-09-02
  • 打赏
  • 举报
回复
countif只能一个条件,多条件用countifs或者sum数组
宋翔 2010-09-02
  • 打赏
  • 举报
回复
数据透视表

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧