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 函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注