ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba 双上线的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-4 14:55 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
各位大佬,我有如图的表格,
身份证号姓名 语文数学 英语 文化总分 测试总分
001 张三 90 80 70 240 160
002 李四 60 60 60 180 150
实际表格有1000多数据,
现在招生计划是533,预计双上线人数是 招生计划 *1.1倍,就是533*1.1,如果有小数,就取整,所以预计双上线人数是586人,
双上线的意思是先对“文化总分、语文、数学、英语”进行降序排列,把文化总分涂成红色,然后对“测试总分、语文、数学、英语”进行降序排列,把测试总分涂成红色,当一行具有2种颜色,就算该生是双上线。
我简单测试了下,如果按100人排序,就有15人双上线,现在要求实际双上线人数,但由于有同分等情况出现,可能不能精确得到586人,那么就是大于或等于586,且最接近586的数就是实际上线人数。
求大神写个VBA程序啊,我用排序涂色土办法确实可以做,但效率非常低下
具体数据请看附件

附件.rar (101.22 KB, 下载次数: 32)

TA的精华主题

TA的得分主题

发表于 2020-3-4 16:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-4 18:08 | 显示全部楼层

感谢蓝版,但能否用更纯粹的数组和字典的方法,不用单元格排序和颜色的方法呢。
因为这个附件只是个某个专业的一小部分,实际最终数据可能达到10w左右,用单元格排序和颜色应该会速度不快把?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-4 18:23 | 显示全部楼层

而且实际预录取数不是招生计划533, 是招生计划*1.1取整

TA的精华主题

TA的得分主题

发表于 2020-3-4 18:24 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-4 18:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zzj198237 发表于 2020-3-4 18:24
SQL 非常简答实现啊

求实现啊,大佬。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-4 18:42 | 显示全部楼层

而且测试我还发现,这个问题不能事先预估1000行,所以[i2].resize(1000,1).interior.colorindex = 3就不对。。
比如这个数据表不为0的考生人数1420个,我预估1420的话,那不是所有的考生都双上线吗,肯定不对了。。

TA的精华主题

TA的得分主题

发表于 2020-3-4 19:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-3-4 21:52 | 显示全部楼层
felord 发表于 2020-3-4 18:42
而且测试我还发现,这个问题不能事先预估1000行,所以.resize(1000,1).interior.colorindex = 3就不对。 ...

就跟你排序着色一样,是以文化总分为主还是以测试总分为主呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-4 22:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chxw68 发表于 2020-3-4 21:52
就跟你排序着色一样,是以文化总分为主还是以测试总分为主呢?

既不是文化总分为主,也不是测试总分为主,因为2个都要分别排序,
有点估算的意思,先估算100人排序,文化总分排序的集合和测试总分排序的集会的交集的元素个数,有15个,比586小,继续估算,120人排序,这样一直估算,估算到交集的元素个数刚好等于586,或者比586大且最接近的整数就停止。
就是这个一直估算有点麻烦,不能上来就假设1000人排序这样。。。
我心里想着 do until循环,但我水平有限,又写不出来,求大师指点
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-28 20:31 , Processed in 0.053544 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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