求助:excel分类汇总
原始数据如下:
员工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吗?还是什么函数?
谢谢!
[解决办法]
数据透视表
[解决办法]
countif只能一个条件,多条件用countifs或者sum数组
[解决办法]
:)导入到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 allselect '员工B','5/11','迟到10分钟' union allselect '员工A','5/15','迟到5分钟' union allselect '员工A','5/15','迟到5分钟' union allselect '员工C','5/22','迟到10分钟' union allselect '员工B','5/23','迟到10分钟' union allselect '员工A','6/01','迟到15分钟' union allselect '员工C','6/04','迟到15分钟' union allselect '员工B','6/12','迟到5分钟' union allselect '员工C','6/24','迟到15分钟' union allselect '员工A','6/27','迟到10分钟' union allselect '员工B','6/28','迟到5分钟' union allselect '员工A','7/03','迟到15分钟' union allselect '员工A','7/06','迟到5分钟' union allselect '员工B','7/09','迟到10分钟' union allselect '员工A','7/17','迟到5分钟' union allselect '员工B','7/18','迟到15分钟' union allselect '员工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 ttGROUP 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 ttGROUP BY tt.sname,tt.yy,tt.mmORDER 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*/
[解决办法]
用数据透视表很简单
数据透视结果如下:
计数项:备注月
员工567总计
员工A3238
员工B2226
员工C1214
总计66618