ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 成绩转换求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-22 11:05 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请有空的大师帮忙看看,学生先感谢了

学生总成绩导出20240510.zip

1.49 MB, 下载次数: 26

TA的精华主题

TA的得分主题

发表于 2024-5-22 11:10 | 显示全部楼层
功能简单,需求看的头晕

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-22 11:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-22 11:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-22 20:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
确实是个体力活,搞了快一个小时
录制_2024_05_22_20_17_51_602.gif

TA的精华主题

TA的得分主题

发表于 2024-5-22 20:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
JSA代码,都写麻木了,想不到VBA要写多少
  1. function 数据转换(){
  2.         Sheets.Item("转换后数据").Activate();
  3.         const arr=Sheets.Item("源数据").Range("a1").CurrentRegion.Value2;
  4.         const bt1=arr[1].reduce((bt1,x,i)=>(bt1[x]=i,bt1),{});
  5.         const bt2=Range("a1").CurrentRegion.Value2[0].reduce((bt2,x,i)=>(bt2[x]=i,bt2),{});
  6.         const mbarr=new Array(Object.keys(bt2).length).fill(null);
  7.         let obj={},dic={},k=0;
  8.         arr.slice(2).forEach(x=>{
  9.                 let key=x[bt1.学号] + x[bt1.课程名称];
  10.                 let temp=obj[key]=obj[key] || [...mbarr];
  11.                 if (x[bt1.考试类型]=="正考"){
  12.                         ["学号","姓名","班级","课程名称","姓名"].forEach(i=>temp[bt2[i]]=x[bt1[i]]);
  13.                         [temp[bt2.正考学年], temp[bt2.正考学期]]=[x[bt1.成绩学年学期].slice(0,9), x[bt1.成绩学年学期].slice(-1)];
  14.                         [temp[bt2.总评成绩], temp[bt2.再补考最高成绩]]=[x[bt1.综合成绩], "=MAX(RC[19]:RC[24])"];
  15.                         [temp[bt2.序号], temp[bt2.录入成绩教师姓名], temp[bt2.录入补考成绩]]=[++k, x[bt1.操作人], "=RC[-18]"];
  16.                         let marr=x[bt1.成绩分项描述].match(/(?<=:)\d+/g);
  17.                         [temp[bt2.平时成绩], temp[bt2.期末成绩]]=marr!=null?[marr[0],marr[1]]:[,,];
  18.                 }else if (x[bt1.考试类型].includes("补考")){
  19.                         if (temp[bt2.学号]=="2113010108"){
  20.                                 let a;
  21.                         }
  22.                         let ikey=key + "补考";
  23.                         dic[ikey]=(dic[ikey] || 0) + 1;
  24.                         if (dic[ikey]==1){
  25.                                 temp[bt2.补考成绩]=x[bt1.综合成绩];
  26.                         }else{
  27.                                 let n=bt2[`再补考${dic[ikey]-1}成绩`];
  28.                                 temp[n]=x[bt1.综合成绩];
  29.                         }
  30.                 }
  31.         });
  32.         let res=Object.values(obj);
  33.         Range("a2").Resize(res.length,res[0].length).FormulaR1C1=res;
  34.         ThisWorkbook.Save();
  35. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-5-22 20:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附件在此,WPS测试,运行JS宏

学生总成绩导出20240510.zip

1.43 MB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-5-22 20:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
运行后,压缩包发不上来,附件较大,必须删除运行的结果

TA的精华主题

TA的得分主题

发表于 2024-5-22 21:26 | 显示全部楼层
学生总成绩导出20240510.zip (1.69 MB, 下载次数: 27)

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-23 08:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-6-18 09:40 , Processed in 0.044205 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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