如何实现有重复值的排名
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,将数据粘贴进来。
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)。
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表示返回各组成员原来的序号。