提取各科成绩第一名的记录,Application.Index函数提取数组整行整列

文摘   教育   2024-10-23 22:50   江苏  

关于本公众号】了解一下,欢迎关注谢谢!

快速浏览

实用案例

|日期控件||简单的收发存||收费管理系(Access改进版)|

|电子发票管理助手||电子发票登记系统(Access版)|

|文件合并||表格拆分||审计凭证抽查底稿|

|中医诊所收费系统(Excel版)||中医诊所收费系统(Access版)||银行对账单自动勾对|

|印章使用登记系统|

收费使用项目

|财务管理系统||工资薪金和年终奖个税筹划||新税法下工资表模版|

内容提要

  • Application.Index函数提取数组整行、整列
  • ReDim Preserve 动态扩展数组
大家好,我是冷水泡茶,今天在EXCELHOME论坛上看到一个贴子:[求助] 怎么提取各科成绩第一名?

代码运行得不到正确结果,不知哪里有问题,请高手指点! 

https://club.excelhome.net/thread-1704336-1-1.html?_dsign=1fd8ea09

关于成绩排名的,我们以前分享过几个案例,可以参考:

1、学生成绩排序(二次更新)

2、学生成绩排名:利用VBA+SQL+数组+字典进行学生成绩排名

3、学生成绩排名查询:SQL+数组行列动态扩展查询指定排名范围的学生信息

4、学校成绩统计对比:总分、平均分、优秀率、及格率、总分分段统计

我们来看一下今天这个案例的数据表格:
1、成绩
2、提取各科第一名表,这是结果样板,在此表的最左边还有一个同样格式的空白表格:
需求分析:
1、问题不是很难,但是有点烦,我们要一个学科一个学科地去提取第一名。
2、提取前几名的操作,SQL语句比较拿手,但是也需要一个字段一个字段去处理,也比较麻烦。
3、我们还是用数组循环的方式来处理,找出每个科目的最高分,把对应记录写到一个结果数组temp中。
基本思路
1、把成绩数据装入数组arr。
2、循环arr的列,从第4列开始循环,针对每一列,也就是每个学科,我们用Application.Index函数取得arr当前列,这也是一个数组,我们再用工作表函数Max,取得这个数组最大值,赋值给maxPoint变量。
3、我们接着循环arr的行,把当前学科成绩等于maxPoint的记录存到数组temp中,采用动态扩展的方法。
4、我们把temp数据写入目标工作表,设置单元格格式。

完整代码详见当天另一条推文!

后记

1、在获取每科最高分的时候,本来是准备用循环来解决的,但一方面觉得接着又是一个同样的循环,感觉不太爽,加之,隐约记得在哪里看到过有一个取得数组整行、整列的函数Index,如果再能用Max函数获取最大值,那岂不是省事多了?于是上网搜索了一番,正如我所想,还真能这么搞,于是就用上了Application.Index函数,以及工作表函数Max。

2、前文我们提到可以采用SQL来解决,我也是懒得去想了,把问题交给ChatGPT,最终它给写了一个完整的代码,稍作修改,也能得出结果,数据排列的顺序有点变化。代码也贴到另一篇文章中。

好,今天就到这里,我们下期再会!


~~~~~~End~~~~~~

安利小店
安利的牙膏非常不错,用了以后就不想再用其他的了;洗洁精洗衣液也是日常必备,用过都说好!

合谷医疗
合谷医疗专攻各种疑难杂症,尤其擅长抑郁症焦虑失眠儿童神经发育异常多动症自闭孤独症腰颈椎疾病治疗,可谓神乎其技!体验过的直呼早点来就好了

喜欢就点个、点在看留言评论、分享一下呗!感谢支持!

案例文件分享说明

  • 案例文件可免费分享,但需符合以下要求:

  • 关注点赞点在看点...留言,方便的话分享一下就完美啦!如果不便走上面的“流程”,请打赏,万分感谢!

  • 请添加上方我的合谷医疗企业微信,案例文件通过微信发送。如有定制需求,亦可通过微信联系。

  • Excel问题,请在文章下面留言讨论!或者加入我的付费交流群提问

VBA编程实战
Excel应用案例、Excel VBA、公式函数使用技巧分享,思路解读...... 这里有鲜活案例、实用的技巧......
 最新文章