|
本帖最后由 lsh888 于 2016-10-31 22:24 编辑
我写了VBA代码,但运行老出错,excel工作薄中有5个表,其中成绩录入已录完,团体总分已算出,用是函数调用。名次表生成,希望点击能够自动生成,请高手帮忙,特别请赵老师(zhaogang1960)百忙之中抽空帮我修改一下。附件已上传。Sub 名次表()Dim m As Integer, a As Variant, b As Variant, c As Variant, i As Integer, j As Integer
' 循环变量m从第3行查找到第390行
For m = 3 To 390 Step 3
' 取查询变量a,b,c等于第1,2,3列与第m行交叉单元格
a = Cells(m, 1)
b = Cells(m, 2)
c = Cells(m, 3)
' 从第5行循环到最后的数据行
For i = 1 To 成绩录入.Rows.Count
' 如果"成绩录入"工作表的第5,6,7列与第i行交叉单元格的值等于要查询的变量a,b,c,再查得分是否为7,5,4,3,2,1,
If 成绩录入.Cells(i, 5) = a And 成绩录入.Cells(i, 6) = b And 成绩录入.Cells(i, 7) = c Then
If 成绩录入.Cells(i, 10) = 7 Then
'当查得第一名,得7分后,返回“成绩录入”工作表中第i行第3、4、8列中的姓名、单位、成绩至“名次表”的第4列m、m+1、m+2行
Cells(m, 4) = 成绩录入.Cells(i, 3)
Cells(m + 1, 4) = 成绩录入.Cells(i, 4)
Cells(m + 2, 4) = 成绩录入.Cells(i, 8)
Else: For j = 0 To 4 Step 1
If 成绩录入.Cells(i, 10) = 5 - j Then
'当查得第2-6名,得5、4、3、2、1分后,返回“成绩录入”工作表中第i行第3、4、8列中的姓名、单位、成绩至“名次表”的第5+j列m、m+1、m+2行
Cells(m, 5 + j) = 成绩录入.Cells(i, 3)
Cells(m + 1, 5 + j) = 成绩录入.Cells(i, 4)
Cells(m + 2, 5 + j) = 成绩录入.Cells(i, 8)
End If
Next j
End If
End If
' 如果未找到查询变量a,b,c的值,则读取下一个i值
Next i
Next m
' 退出代码
End Sub
|
|