首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 办公应用 > OFFICE教程 >

excel分类汇总

2012-11-19 
求助:excel分类汇总原始数据如下:员工A5/01迟到5分钟员工B5/11迟到10分钟员工A5/15迟到5分钟员工A5/15迟到

求助: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中处理一下再导出来如何???

SQL code
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

热点排行