Excel分数排名和位次排名公式:
1. 分数排名(rank):
分数排名表达的是同一组成绩中,个人排名。 如果出现多个同分,那么就会有多个相同排名。
通常,Excel中使用RANK()函数来进行分数排名,RANK.EQ()函数,可以实现“分数相等时,排名一致”的功能。
示例如下: =RANK.EQ(A2, $A$2:$A$11, 1) (以A2为参照单元格,在A2:A11区域内排名,降序排列)
2. 位次排名(rank.avg):
位次排名表示的是,在某一组中,每个成绩均按位次进行排序,该组成绩出现多个相同分数时,取平均排名(称作“平均排序法”,例如,三个同分时,取前三名的平均数)。
通常,Excel中使用RANK.AVG()函数来进行位次排名,RANK.AVG()函数的参数与RANK.EQ()函数类似,示例如下: =RANK.AVG(A2, $A$2:$A$11, 1) (以A2为参照单元格,在A2:A11区域内排名,降序排列)
总的来说,Excel中的分数排名和位次排名都是非常有用的,但是由于排名就是对一组数据进行排序,而Excel中提供的排序函数只能进行单列排序,即只能对一列中的数据进行排序,无法一次性完成多列排序任务,因
此,如果需要对多列进行同时排序,最好使用VBA 编写代玛来实现。
VBA 实现多列排序的步骤如下:
1)创建一个模块,打解VBA编辑器,在工作表标签中点击“插入”,选择“模块”;
2)将相应的排序程序代玛复制粘贴到模块中;
3)双击模块,运行程序代玛,完成排序,程序代玛如下: Sub SortMultiColumn() Dim lastRow As Long Dim Col As Long Dim i As Long Dim keyColumns() As Long Dim keyColumn As Long
'定义排序列数量 Col = 2 ReDim keyColumns(Col) '以A列和B列作为排序列 keyColumns(1) = 1 keyColumns(2) = 2 '定义排序的钥匙列,这里为B列 keyColumn = 2 '定义最后一行
lastRow = Cells(Rows.Count, "A").End(xlUp).row 'lastRow=Cells(Rows.Count,"A").End(xlUp).row '设置排序方向 ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B" & lastRow), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With
ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("A1:B" & lastRow) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin
.Apply End With For i = lastRow To 2 Step -1 If Cells(i, keyColumn) <> Cells(i - 1, keyColumn) Then Range(Cells(i, 1), Cells(i, Col)).select Selection.Cut
Destination:=Range("A" & i + 1) Range("A" & i + 1).Select Selection.Insert Shift:=xlDown End If Next End Sub
4)保存模块,按Ctrl+F5键运行程序,完成多列排序任务。
总而言之,Excel中的分数排名和位次排名公式非常实用,可以轻松解决日常排序任务,但是如果需要对多列进行排序,最好采用VBA 编写程序来实现,更好地满足用户需求。
转载请注明来源本文地址:https://m.tuituisoft/office/39120.html