ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 12463|回复: 108

[求助] 名次顺位排序法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-8-7 14:50 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 EXCEL江湖 于 2014-8-8 12:58 编辑

查阅了很多关于排序法的资料,但还是不能写出关于顺位法的代码,请论坛中的高人帮助!万分感谢!要求都在附件里。 单项顺位排序.rar (14.06 KB, 下载次数: 38)
在实际操作中,裁判的数量为奇数个,3、5、7、9、11、13等。最大名次可以自由设定!谢谢!

TA的精华主题

TA的得分主题

发表于 2014-8-7 17:16 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-7 17:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子老师,您好!规则基本能够理解,但是关于计算排序的东西对我还是太难,请您多帮忙!在群里看了您的很多关于算法的问题,您的代码即少效率又很高,但有点难懂,也许是我的基础太差的原因,还请您多指点,谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-8 13:10 | 显示全部楼层
请坛里的高手帮忙看看!谢谢!

TA的精华主题

TA的得分主题

发表于 2014-8-8 14:00 | 显示全部楼层
写了自定义函数解决。

① 区域数组公式用法: (只需输入数据区域一个参数)
1. 选中第1个输出单元格,输入 =rk([范围])  如:=rk(B6:F11)
2. 然后全选数据区域对应行数大小的多行单列区域,Ctrl+Shift+Cr数组三键即可。


② 独立单元格公式用法: (需输入数据区域,以及输出序号 2个参数)
单元格输入 =rk([范围],[序号]) 即可

序号可以改为 Row(A1) 就可以下拉复制使用了。
但此时数据区域必须绝对引用,如=rk($B$6:$F$11,ROW(A1))



…………
另外一个函数=f([单行区域],[总人数]) 是用来显示排序计算结果信息的。
不需要在工作表中使用。但在工作表中列出,便于观察结果是否正确。

bisaimingci.zip

18.68 KB, 下载次数: 56

TA的精华主题

TA的得分主题

发表于 2014-8-8 14:16 | 显示全部楼层
s3_3h08s33f3_23333

排序规则:
1. 过半时档次,即正好过半时的分值
   位置在首个s和第一个下划线_之间的内容 如 s3_ 表示过半时最大档位分值=3

   此项为第一优先排序项
  

2. 过半+1时的档次分值  
   位置在第一个下划线_之后h之前的内容 如 s3_3h 表示过半+1时档位分值=3

   此项为第二优先排序项


3. 过半时的档次分值累计和h  
   位置在h之后第2个s之前的内容 如 s3_3h08s

   此项为第三排序项
  

4. 过半以后的档次分值顺位  
   位置在第2个s之后,f之前的内容 如 s3_3h08s33f

   此项为第4排序项

5. 第1个裁判给的档次分值  
   位置在f之后,第2个下划线_之前的内容 如 s3_3h08s33f3_

   此项为第5排序项

6. 第2个下划线_之后的内容,是所有裁判分值的从小到大排序结果,供参考。

按前面5个排序项就能足够区分名次了。

呵呵。

裁判数增加、人数增加以后的测试,请楼主自己做一下。看结果是否正确。



  

TA的精华主题

TA的得分主题

发表于 2014-8-8 14:23 | 显示全部楼层
此问题的难度,还在于对规则的正确理解上。

如能正确理解,则按规则以及顺序逐项计算,最后按计算结果一次性比较排序即可。

考虑到数值的15位限制,所以最后用文本字符串来输出结果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-8-8 16:57 | 显示全部楼层
本帖最后由 EXCEL江湖 于 2014-8-8 16:58 编辑

首先感谢香川群子老师的热心帮助!努力学习您的代码,但还是有些困难,在测试7个裁判时排序出错。
因平时工作时有大量的数据要处理时,公式会显得有一些慢,能否直接VBA生成计算结果和小分,就如范例一样,谢谢!

TA的精华主题

TA的得分主题

发表于 2014-8-8 21:23 | 显示全部楼层
EXCEL江湖 发表于 2014-8-8 16:57
首先感谢香川群子老师的热心帮助!努力学习您的代码,但还是有些困难,在测试7个裁判时排序出错。
因平时工 ...

你把出错的上个附件啊,同时说明一下错误在哪里。

TA的精华主题

TA的得分主题

发表于 2014-8-8 21:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
EXCEL江湖 发表于 2014-8-8 16:57
首先感谢香川群子老师的热心帮助!努力学习您的代码,但还是有些困难,在测试7个裁判时排序出错。
因平时工 ...

VBA自定义公式计算不会慢。

公式比按钮更灵活。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 07:30 , Processed in 0.051455 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表