|
本帖最后由 xsg123456 于 2024-1-11 23:27 编辑
给你做 原表不动 新表自动生成 自动总分 排名 的一键版
- function collectAll(){
- Application.ScreenUpdating = false
- let path = ThisWorkbook.Path,
- files = ["语文","数学","英语"],
- obj = {} , res = []
- files.forEach(name =>{
- let wb = Application.Workbooks.Open( path + `\\${name}.xlsx`)
- let tmp = wb.Sheets("Sheet1").Range("a2").CurrentRegion.Value2.slice(1)
- tmp.forEach(v => {
- let key = [v[0] , v[1]]
- obj[key] = obj[key]? [...obj[key],v[2]] : [v[2]]
- key = [v[5] , v[6] ]
- obj[key] = obj[key]? [...obj[key],v[7]] : [v[7]]
- key = [v[10] , v[11]]
- obj[key] = obj[key]? [...obj[key],v[12]] : [v[12]]
- })
- wb.Close()
- })
- let res1 = Object.keys(obj).map(v=>v.split(",")),
- res2 = Object.values(obj).map(v => [...v,v.reduce((p,c) => p*1+c*1)])
- res1.unshift(["学号","姓名"])
- res2.unshift(["语文","数学","英语","总分"])
- res = res1.map((v,i)=> [v[0],v[1],...res2[i]]).sort((a,b)=>b[5]-a[5]).filter(v => v[0])
- res = res.map((v,i) => {
- if (i == 0) {
- return [...v,"班级排名"]
- }else{
- return [...v,i]
- }
- })
- Range("a2").CurrentRegion.ClearContents()
- Range("a2").Resize(res.length,res[0].length).Value2 = res
- Application.ScreenUpdating = true
- }
复制代码
成绩表.7z
(24.45 KB, 下载次数: 20)
|
|