如何实现有重复值的排名

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表示返回各组成员原来的序号。