统计与考核分类管理员成绩的excel,希望对大家有帮助。
知道管理吧
全部回复
仅看楼主
level 5
reformc 楼主
大家好,闲着没事做了两个晚上做出来的,希望可以与大家分享。
各位统计分类管理员成绩和考核实习管理员的分类高管不知道是不是用excel表格统计的数据,我做了个表格是把网站数据导入到excel中,然后可以做到时时更新,并与旧数据对比可得出成绩。下面几个网址是材料:
知道公社里显示的分类管理员成绩(下面我们简称知道公社成绩):
http://common.zhidao.baidu.com/uoperator/static/total_data
用户总检举数和检举成功率(下面简称用户检举数据,这里举例小智的):
http://mt.zhidao.baidu.com/view?un=du小智
管理员分类CID对应数据(如果你能看懂每个数字对应的分类可以不管这个,下面简称CID分类数据):
http://zhidao.baidu.com/classleveljs
我以我做的excel表格举例,我是把知道公社成绩导入在A1表格,CID分类数据导入在A2表格。注意是导入到一个表格里而不是导入成一个表。自己要统计的分类管理员和实习管理员输入到A列,我是从A7开始输的。
怎么导入网站数据我就不用说了吧,不知道的话可以上网搜一下。从网站导入的优点是点击一下刷新按钮,数据就自动刷新了,不用自己一个个的到网站上去复制。
下面我只说下公式:
比如我们计算A7用户的数据:
当月检举数:
=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("num",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+4,FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("num",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-6)
当月月转移数:
=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+8,FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-10)
当月出勤:
=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+6,FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-8)
当月总分:
=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+6,FIND("cid:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-8)
管理员分类:
因为管理员可以有多个分类,所以公式很复杂,由于不会用宏,所以公式太长以至于不能写入excel中,所以分了两列,先计算
分类cid:
=MID(S7,FIND("cid:",S7)+5,FIND("}",S7)-FIND("cid:",S7)-6)
我们把这个分类cid写在B列,那么
管理员分类:
=IFERROR(IFERROR(LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1))-1),FINDB(",",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(B7,$A$2)+1))-1))-3),CONCATENATE(LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-1),FINDB(")",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-1))-2),"|",LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1))-1),FINDB(")",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),$A$2)+1))-1))-2))),CONCATENATE(LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-1),FINDB(")",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-1))-2),"|",LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",
2010年04月30日 17点04分 1
level 5
reformc 楼主
B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1))-1),FINDB(")",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-1),$A$2)+1))-1))-2),"|",LEFTB(RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),LENB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),LENB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(LEFTB(B7,FINDB("|",B7)-1),$A$2)+1))-1),FINDB(")",RIGHTB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),LENB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))),$A$2)+1),LENB(RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),LENB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))),$A$2)+1))-FINDB(",",RIGHTB($A$2,LENB($A$2)-FINDB(RIGHTB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)),LENB(RIGHTB(B7,LENB(B7)-FINDB("|",B7)))-FINDB("|",RIGHTB(B7,LENB(B7)-FINDB("|",B7)))),$A$2)+1))-1))-2)))
呵呵,这个公式有点长,计算机可能反应有点慢。
上面这些是正式管理员出现在知道公社管理员成绩排行榜上的数据。每个月就会清零,所以要注意保存历史数据,用好选择性粘贴就行了。
然后来把用户检举总数和检举成功率加入到表格中:
由于插入网站数据的区域不能排序,所以我们用另外个表格来做,当然你也可以直接在刚才的表格里加入,但是我是在另外的表格里添加的。
和上面一样,把用户ID输入在A列,用户检举数据就插入在B列,我们这里以计算A5用户数据为例那么
用户检举数:
=REPLACE(LEFT(B5,SEARCH(",",B5)-2),1,19, )
检举成功率:
=MID(B5,FIND("rate",B5)+6,FIND("})",B5)-FIND("rate",B5)-7)
这两个数据考核实习管理员很有用。
导入用户检举数据很麻烦,得一个个的导入,由于不会用宏,所以写了个vbs文件模拟按键来操作,大家可以看看我写的vbs作为参考,然后根据自己电脑的反应速度和excel版本来修改延时和按键。
Set wshshell=CreateObject("wscript.shell")
WScript.Sleep 5000
For i=1 to 10 ‘这里的“10”指导入10个用户数据,你可以根据自己的需要来修改。
ctr=0+i
wshshell.SendKeys "1"
WScript.Sleep 200
wshshell.SendKeys "^{z}"
WScript.Sleep 200
wshshell.SendKeys "^{c}"
WScript.Sleep 200
wshshell.SendKeys "{right}"
WScript.Sleep 200
wshshell.SendKeys "%{a}"
WScript.Sleep 200
wshshell.SendKeys "{F}{W}"
WScript.Sleep 1000
wshshell.SendKeys "http://mt.zhidao.baidu.com/view?un="
WScript.Sleep 200
wshshell.SendKeys "^{v}"
WScript.Sleep 200
wshshell.SendKeys "{enter}"
WScript.Sleep 1000
wshshell.SendKeys "{tab}"
WScript.Sleep 500
wshshell.SendKeys "{enter}"
WScript.Sleep 500
wshshell.SendKeys "%{I}"
WScript.Sleep 500
wshshell.SendKeys "%{r}"
WScript.Sleep 500
wshshell.SendKeys "%{o}"
WScript.Sleep 500
wshshell.SendKeys "{enter}"
WScript.Sleep 200
wshshell.SendKeys "{enter}"
WScript.Sleep 200
wshshell.SendKeys "{down}"
WScript.Sleep 200
wshshell.SendKeys "{left}"
Next
MsgBox "Done !"
如果我们把用户检举数写在C列,把检举成功率写在D列,那么复制C列数据然后选择性粘贴(值和数字格式)到E列,并在E列最上的表格里按ctrl+;和ctrl+shift+;可以插入当前时间,然后在F列写入=E列-C列,就可以得到你插入时间持续到当前每个用户检举了多少。
如果有兴趣,也可以把用户的其他数据都导入到excel中,比如经验值,财富值,等等,甚至个人爱好等等。
下面的网址可能对你有帮助:
用户积分:
(小智的)http://zhidao.baidu.com/q?ct=24&cm=18&tn=uiscore&un=du小智
用户收到的求助数据:
(小智的)http://zhidao.baidu.com/q?ct=14&cm=8&un=du小智&tn=ikcardhelpnum&pv
知道公社管理员排行榜:
http://www.baidu.com/search/zhidao/user/total.html
还有其他的比如分类达人分类名人排行榜等等。
本人第一次用excel算东西,还望高人指点。此文在word中编辑,可能有些代码被word修改。

2010年04月30日 17点04分 2
level 5
[Yeah]很有用
[拍砖]但是很长,而且估计大部分人都看不懂!

2010年04月30日 17点04分 3
level 6
我是直接跳过了代码的~[拍砖]
2010年04月30日 19点04分 5
level 5
reformc 楼主
我贴代码出来不是让你们看的啊,直接复制过去就行了。而且这些公式其实我也看不懂,我都是先弄简单的公式,然后复制到word里用替换功能编辑出来的。
这些公式也不是真正用来计算的,而是从网站那堆数据里拣出能够直接编辑计算的数据。
公式的确有点长,把排行榜上的300多个管理员全部编辑进去,刷新一次数据要计算十几秒,所以最好设置手动刷新。
2010年04月30日 21点04分 6
level 5
reformc 楼主
额,真不好意思,我做的表格里面计算分类的只能最多只支持3个分类,但是这个月貌似有人有可以兼4个分类的管理员了。大家可以忽略掉分类的公式吧,等有时间再去修改。
2010年05月01日 17点05分 7
level 8
[瀑布汗~]我真的看不懂...囧
2010年05月02日 05点05分 8
level 8
[撞墙至死]不懂
2010年05月02日 07点05分 9
level 5
谢谢楼主。很有启发。
2010年05月02日 09点05分 10
level 13
好吧,我表示我在装懂……
2010年05月02日 15点05分 11
level 9
对此需要多个零晨来研究一下
2010年05月02日 16点05分 12
level 5
reformc 楼主
4个分类的公式我貌似搞不定,太长了,excel规定公式长度不能超过8192字节,嵌套层数不能超过64层,而且上面分类的公式貌似也有点错误。
其实看不懂也没有关系,
简单的说,就是再A1格插入网站数据:http://common.zhidao.baidu.com/uoperator/static/total_data
在A2格插入网站数据:http://zhidao.baidu.com/classleveljs
从第七行开始输入公式,
A列是管理员的账号
B列是当月转移数,B7输入:=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("num",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+4,FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("num",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-6)
C列是当月月转移数,c7输入:=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+8,FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("movenum",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-10)
D列是当月出勤数,d7输入:=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+6,FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("times",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-8)
E列是当月总分,e7输入:=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1),FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))+6,FIND("cid:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-FIND("total:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A7,$A$1)+1))-8)
F列是管理分类的CID号码,f7输入:=MID(RIGHTB($A$1,LENB($A$1)-SEARCHB(A6,$A$1)+1),FIND("cid:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A6,$A$1)+1))+5,FIND("}",RIGHTB($A$1,LENB($A$1)-SEARCHB(A6,$A$1)+1))-FIND("cid:",RIGHTB($A$1,LENB($A$1)-SEARCHB(A6,$A$1)+1))-6)
然后把表格拖一下就变成知道公社的那个管理员检举排行榜的excel版本了。
至于考核新实习管理员要用的检举数和检举成功率,也可以插到表格里,不过因为检举数和检举成功率的网站数据要一个个的导入所以要用的宏,如果不会用宏(比如我就是,我是个新手),就写个vbs模拟按键来导入。
比如在A列输入用户账号,在B列我们用宏或者vbs导入网站数据,
然后C列是总检举数,在c5输入:=REPLACE(LEFT(B5,SEARCH(",",B5)-2),1,19, )
D列是检举成功率,在d5输入:=MID(B5,FIND("rate",B5)+6,FIND("})",B5)-FIND("rate",B5)-7)
当有人申请通过开始做实习管理员的时候就把他在C列的数据复制然后选择性粘贴(值和格式)到E列,等到月底考核的时候,
在F5输入:=E5-C5
就可以看到他的检举数增量了。
这样说的够清楚了吧。
如法炮制可以将用户经验值,财富值等等数据都以网站链接的方式来链接到excel里,然后打开excel直接刷新就可以看到你想要的各个数据了,还可以通过各种计算和筛选来得到你想要的数据,比如本月(或者今日、本周等等)所有管理员总检举数,总转移数,各个分类的检举数转移数,每个分类有多少管理员,
如果插有经验值和财富值的数据,还可以看到想要监视的用户的经验值和财富值的增减曲线图。如果要更详细的查询当然建立数据库更好。
我这里有两份做了检举数和排行榜的excel,如果有谁想看看可以发给你们。
2010年05月02日 20点05分 13
level 6
我完全看不懂啊
2010年05月03日 04点05分 14
1