vba二次排名问题
sheet(1)中有如下数据:
学号 姓名 信号
学号 姓名 数学
103 陈刚 100
107 刘大为 99
120 吴丽 91
116 孙英杰 91
119 吴莉平 86
121 肖银乾 85
102 李亚平 83
114 时静 80
125 王晓花 80
109 唐研 80
可以说是班里数学成绩80分以上的降序排列,现在需要把分数相同的同学在按照sheet(2)中的“体育”成绩进行第二次降序排列,sheet(2)内容如下:
学号 姓名 体育
103 陈刚 69
107 刘大为 75
120 吴丽娟 86
105 张红 92
109 唐研 71
118 王志勇 79
102 李亚平 63
114 时静 85
122 信卫静 82
116 孙英杰 71
125 王晓花 75
115 宋德理 80
110 孟金玲 69
106 李涛 86
119 吴莉平 84
117 田贤炳 64
101 张宇 60
112 张红 62
104 王雨 77
111 孟萍 76
121 肖银乾 88
108 李丽丽 91
113 任建华 94
123 李虎 74
124 王勇 79
126 小辉 59
128 大海 83
129 小牛 73
130 二单 70
131 王杰 82
大家对于这个要求的思想是什么样的?我先说说我的吧:1,先在sheet(1)中找到分数相同的同学的学号,因为学号一般不会相同,上面数据为103和107;2,在sheet(2)的”A“中找到此学号对应的行号,在比较行号对应的体育分数;3,若不和要求将sheet(1)中的相同行数据交换位置。
Dim mn1 As Worksheet, mn2 as Worksheet, zx1 As Range,zx2 as Range,dim Dim i As Integer, j As Integer, k As Integer, x As Integer
Set mn1 = worksheet(1)
Set zx1 = mn1.UsedRange
Set mn2 = worksheet(2)
Set zx2 = mn2.UsedRange
For k = 2 To zx1.Rows.Count Step 1
For x = k + 1 To zx.Rows.Count Step 1
If zx1.Cells(k, 3).Value =zx1.Cells(x, 3).Value Then sheet(1)中若有人分数相同
zx1.Cells(k, 1).Value =i 相同的第一个学号
zx1.Cells(x, 1).Value =j 相同的第二个学号
for i = 2 To zx2.Rows.Count
For j = i+ 1 To zx2.Rows.Count
if zx2.Cells(k, 1).Value =i then “在sheet(2)中找到相同的第一个学号103
if zx2.Cells(x, 1).Value =j then ”在sheet(2)中找到相同的第二个学号105
100: if zx2.Cells(i, 3).Value<zx2.Cells(j, 3).Value then 若不满足大于条件
For m = 1 To zx1.Columns.Count Step 1 用for循环实现相同分数的交换
st = zx1.Cells(k, m)
zx1.Cells(k, m) = zx1.Cells(x, m)
zx1.Cells(x, m) = st
Next m
End If
End If
End If
Next j
Next i
上面是我程序中的一部分,大家给看看是不是有问题,我运行后怎么没有给我进行第二次降序排列啊,代码好像运行到100处就不运行了,应该是给我跳出结束了。大家对这个二次排序要求有什么好的想法,我调试了一天了也没有成功,希望大家多多指导啊,刚学vba时间不长,有好多问题弄不清。