EXCEL 复杂排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:47:07
因工作要做张比赛学生成绩表,说明一下:比赛的学生可以提交一件以上的作品,每一件作品一个分数。排序要求如下:总体分数从高到低按每个人成绩排序,如A同学(一件作品)80分;B同学(二件作品)为70,20;C同学(三件作品)为40,90,60……,则排出的结果应是这样的:

C 90
C 60
C 40
A 80
B 70
B 20

不知道我说明白没有…………,希望高手邦忙告之有否可以如此排序的公式或函数什么的,谢谢~~
to smallcolour:
谢谢您提供的方法!
恩,看的有点晕,不知道有没有更简单的?

to 白雪:
也谢谢您的回答,
不过可能您理解错了,这个不是单纯的降序排,是先按成绩降序排后再维持这样的顺序基本不变,但要求把每个人的所有得分放在一起。就如举例说明的,纯降序排列时应为:
C 90
A 80
B 70
C 60
C 40
B 20

最后的结果要求这样排序后再把每个人和分都放在一起,所以最后的结果应该如提问时所列的降序:
C 90
C 60
C 40
A 80
B 70
B 20

希望能有更简单易做的方法…………

我假设你的数据在SHEET1的A和B两列.从第一行开始的.
首先你先排下序.第一关键字为学生的名字,第二关键字为分数(降序),一定要是降序啊.(我假设你是没有标题行的),有的话,你先删除掉标题行,排完以后,你再加上去吧.你的表我具体也没看到,所以有点限制啊.
然后在宏代码框中复制下列代码,运行一下.排好的结果就会到SHEET2中.
Sub AAAA()
Dim A As Integer
Dim B As Integer
Dim C As Integer
C = 1
Do While Range("a1").Value <> ""
A = WorksheetFunction.Match(WorksheetFunction.Max(Range("B:B")), Range("B:B"), 0)
B = WorksheetFunction.CountIf(Range("a:a"), Range("a" & A))
Range("a" & A & ":b" & A + B - 1).Select
Selection.Copy
Sheets("sheet2").Select
Range("a" & C).Select
ActiveSheet.Paste
Sheets("sheet1").Select
Range("a" & A & ":b" & A + B - 1).Delete
C = C + B
Loop
End Sub
*****************
简单的方法

A B
1姓名 成绩
2
3
4
5
数据在AB两列.第一行为标题行
首先你先按名字排好序
然后在C2输入=I