如何实现有重复值的排名

Excel记录着一些人的4项指标,如下图:


A B C D E
1 Name Self Direction Power Universalism Achievement
2 Mary 2 4 4 4
3 Tom 5 3 5 3

计算目标:从F列开始,按照指标值从大到小的顺序(逆序),依次填入指标名。

对于指标值相同的指标名,有两种处理方法,分别是:

1.按顺序排列在不同的单元格,如下:


F G H I
1 Rank1 Rank2 Rank3 Rank4
2 Power Universalism Achievement Self Direction
3 Self Direction Universalism Power Achievement

 2.按顺序挤在同一个单元格,如下:


F G H I
1 Rank1 Rank2 Rank3 Rank4
2 Power,Universalism,Achievement Self Direction
3 Self Direction,Universalism Power,Achievement

这里包含大量与顺序有关的计算,有些可以用Excel函数,比如顺序或逆序排序,有些没有对应的Excel函数,实现起来就比较困难,比如排序后取得某个值原来的(排序前的)序号,或分组后取得某组数据原来的序号。

实现步骤:

1.      运行集算器(可以到润乾官网下载,用职场版,首次运行时会提示加载授权,下载个免费的就够了)

2.  用 Excel 打开要计算的文件,选中 B2:E3 区域,按 ctrl+C 复制到剪贴板。

3.  切换到集算器,选中 A1 格,注意要让光标落到 A1 的编辑状态中,用 ctrl+V,将数据粘贴进来。

imagepng

4.  在集算器中继续编写脚本(处理方法 1):


A
1 …(从 Excel 复制来的数据)
2 =A1.split@n("\t")
3 =A2.(~.psort@z())
4 =A3.(["Self   Direction","Power","Universalism","Achievement"](~))
5 =A4.concat@n("\t")

脚本函数split将字符串拆开重组成表格,psort取排序后的各成员在排序前的序号。@z表示逆序。A2.()表示对集合A2的成员进行循环计算,~是循环中的当前成员。A3()表示按序号取集合A3的成员。

5.  按 F9 执行,点击 A5 格,在右侧可以看到执行结果,点击 "copy data" 按钮,将计算结果复制到剪贴板(也可直接 ctrl+C)。

imagepng

6.  返回 Excel 选中 F2 格,用 ctrl+V 粘贴,即可完成计算。之后可手工补写列头。

7.  处理方法 2 脚本如下,操作过程不变。

` A
1 …(从 Excel 复制的数据)
2 =A1.split@n("\t")
3 =A2.(~.group@p(~).rvs())
4 =A3.(~.(["Self   Direction","Power","Universalism","Achievement"](~).concat(",")))
5 =A4.concat@n("\t")

脚本函数group可对数据分组,默认返回各组成员,@p表示返回各组成员原来的序号。