gpt4 book ai didi

excel - 获得最高分的前五名学生

转载 作者:行者123 更新时间:2023-12-04 19:57:31 28 4
gpt4 key购买 nike

我已经搜索并找到了一个代码,该代码可以提取得分最高的前五个名称。代码没问题,我可以得到名称和标记

Sub Test_GetTopFive()
GetTopFive Range("A2:B" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub

Sub GetTopFive(r As Range)
Dim v, t, i As Long
t = Application.WorksheetFunction.Aggregate(14, 6, r.Columns(2), 5)
v = r
For i = 1 To UBound(v, 1)
If Not IsError(v(i, 1)) Then
If v(i, 2) >= t Then
Debug.Print v(i, 1), v(i, 2)
End If
End If
Next i
End Sub
但是即时窗口中的结果没有排序。我需要先得到最高分的名字。

最佳答案

试试下面的代码。棘手的部分是你不能只对数组进行排序,所以我让它循环你想要的结果数量,然后对于每个结果,它循环遍历数组以找到最大值。一旦找到它就会打印它,然后将它的值设置为 0 以将其从下一个结果中删除。

Sub Test_GetTopFive()
GetTopFive Range("A2:B" & Cells(Rows.Count, 1).End(xlUp).Row)
End Sub

Sub GetTopFive(r As Range)
Dim v, t, m, i As Long, j As Long, rw As Long

t = Application.WorksheetFunction.Aggregate(14, 6, r.Columns(2), 5)
m = t - 1
v = r
For i = 1 To 5
For j = 1 To UBound(v, 1)
If Not IsError(v(j, 2)) Then
If v(j, 2) >= t Then
If v(j, 2) > m Then
m = v(j, 2)
rw = j
End If
End If
End If
Next j
If rw > 0 Then
Debug.Print v(rw, 1), v(rw, 2)
v(rw, 2) = 0
m = t - 1
rw = 0
End If
Next i
End Sub

关于excel - 获得最高分的前五名学生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68842024/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com