Vba:如何对值列表进行分类
您可以使用以下基本语法使用 VBA 对 Excel 中的值列表进行排序:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
此特定示例对单元格B2:B11中的值进行排名,并显示单元格 C2:C11中的排名。
最后一个参数0指定值必须按升序排列(最大值的排名为 1,第二大的值的排名为 2,等等)。
要按降序排列值,只需将0替换为1即可。
以下示例展示了如何在实践中使用此语法。
示例:如何使用 VBA 对值进行排序
假设我们有以下篮球运动员列表及其得分:
假设我们要计算点列中每个值的排名。
我们可以创建以下宏来执行此操作:
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 0)
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
分数列中每个值的排名显示在 C 列中。
例如:
- 拥有 41 分的玩家 H 具有最高分值,因此他获得排名1 。
- 拥有 40 分的玩家 C 具有第二高的分值,因此他获得排名2 。
等等。
要按降序对点列中的值进行排名,我们可以将Rank方法的最后一个参数从0更改为1 :
SubRankValues ()
Dim i As Integer
For i = 2 To 11
Range(" C " & i) = WorksheetFunction.Rank(Range(" B " & i), Range(" B2:B11 "), 1)
Next i
End Sub
当我们运行这个宏时,我们会收到以下输出:
分数列中每个值的排名显示在 C 列中。
例如:
- 拥有 11 分的玩家 I 的分值最低,因此他获得排名1 。
- 拥有 13 分的玩家 E 具有第二低的分值,因此他获得排名2 。
等等。
注意:您可以在此处找到 VBA Rank方法的完整文档。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务:
VBA:如何计算具有特定文本的单元格
VBA:如何计算范围内的行数
VBA:如何编写 COUNTIF 和 COUNTIFS 函数