再也不用加班做排行榜了,这个Excel函数可以搞定一切!

遗忘美丽 2019-03-20 09:34:34

无论是学校的老师,还是从做销售管理,经常要做同一个工作:制作排行榜

很多人都是手工排序,然后手工添加名次:

麻烦在于名次要一个个的输入,因为有分数相同的,如果向下拖动复制容易出错。用rank函数也无法处理相同分数的问题。

除了语文,还有数学、化学等排名榜都需要你手工制作。下次数据更新后,还要手工操作一遍。

是不是很麻烦?是!

为了解决排行榜难题,编了一个自定义函数,可以实现自动生成排行榜。无论数据怎么变,排名榜都可以自动更新。

下面,只需要1分钟,你也可以生成自动更新的排名榜。

操作步骤:

1、复制下面代码

'示例用代码

Function PaiMing(rg As Range, rg1 As Range)Dim iOuter As LongDim iInner As LongDim iLBound As LongDim iUBound As LongDim iTemp As DoubleDim x As Long, k As LongDim arr1, arr2, arr3(1 To 10000, 1 To 3)arr1 = rgarr2 = rg1If UBound(arr1, 2) > 1 Thenarr1 = Application.Transpose(arr1)arr2 = Application.Transpose(arr2)End IfiLBound = LBound(arr1)iUBound = UBound(arr1)'冒泡排序For iOuter = iLBound To iUBoundFor iInner = iLBound To iUBound - iOuter'比较相邻项If arr1(iInner, 1) < arr1(iInner + 1, 1) Then'交换值iTemp = arr1(iInner, 1)iTemp1 = arr2(iInner, 1)arr1(iInner, 1) = arr1(iInner + 1, 1)arr1(iInner + 1, 1) = iTemparr2(iInner, 1) = arr2(iInner + 1, 1)arr2(iInner + 1, 1) = iTemp1End IfNext iInnerNext iOuterFor x = 1 To UBound(arr1)arr3(x, 1) = arr2(x, 1)arr3(x, 2) = arr1(x, 1)k = k + 1If x > 1 ThenIf arr1(x, 1) = arr1(x - 1, 1) Then k = k - 1End Ifarr3(x, 3) = kNext xPaiMing = arr3End Function

2、粘贴代码

工作表标签右键 - 查看代码 - 在新打开的VBE窗口插入模块 - 把代码粘贴到右侧的窗口中,然后关闭窗口。

3、保存文件

当前文件另存为“Excel 启用宏的工作簿”

设置完成后,就可以使用排名函数了。

1、用法介绍

=PaiMing(数据区域,对应排名指标)

语法说明:

数据区域:要排名的数据区域,可以是一列区域,也可以是一行区域。

对应排名指标:和数据一一对应的指标。

2、设置方法

以生成语文排名为例,选取i3:k8区域(根据排行榜需要选取行数),在编辑栏中输入公式

=PaiMing(B2:B15,A2:A15)

然后按Ctrl+Shift+Enter三键完成输入(输入后公式两边会添加大括号{})

1 阅读:8

遗忘美丽

简介:自由自在