无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
123
返回列表 发新帖
楼主: 123oo456
打印 上一主题 下一主题

求教,Excel表格问题

  [复制链接]
61#
发表于 2024-1-21 19:52:18 | 只看该作者
本帖最后由 xsg123456 于 2024-2-1 15:48 编辑
123oo456 发表于 2024-1-21 17:22
你好,最近一直在研究你给的那段代码,就是前几天解决EXCEL汇总的那段代码,实际工作中遇到问题,如果有 ...
  1. function main(){
  2.         //主程序
  3.         let  files = ["语文","数学","英语"]
  4.         let data = sjqx(files).map(v=>(v.splice(4,1),v))
  5.         data.unshift(["学号","姓名","得分","座号","科目"])
  6.         let res = flhz(data)
  7.         Range("a1").ClearContents()
  8.         Range("a1").Resize(res.length,res[0].length).Value2 = res
  9.        
  10. }


  11. function flhz(data){
  12.         //分类汇总
  13.         let [rowN,colN,row,col,res] = [0,0,{},{},[]]
  14.         data.forEach((cur) =>{
  15.                 if(!row[cur[1]]){
  16.                         row[cur[1]] = rowN ++
  17.                         res.push([cur[0],cur[1],cur[3]])
  18.                 }
  19.                 if(!col[cur[4]]) {
  20.                         col[cur[4]] = 3 + colN ++
  21.                         res[0][col[cur[4]]] = cur[4]
  22.                         res[row[cur[1]]][col[cur[4]]]= cur[2]
  23.                 } else{
  24.                         res[row[cur[1]]][col[cur[4]]]= cur[2]
  25.                 }
  26.                
  27.         })
  28.         res = res.map(v=>(v[3]=v[6]+v[4]+v[5],v)).sort((a,b)=>b[3]-a[3])
  29.         return res
  30. }

  31. function readLine(arr){
  32.         //一行重复数据切割
  33.         let tmp = []
  34.         while(arr.length>0){
  35.                 if (arr.length>5) {
  36.                         tmp.push(arr.splice(0,5))
  37.                 }else{
  38.                         tmp.push(arr.splice(0))
  39.                 }
  40.         }
  41.         return tmp
  42. }

  43. function sjqx(files){
  44.         //数据清洗
  45.         let path = ThisWorkbook.Path
  46.         let data =[]
  47.         files.forEach(name =>{
  48.                 let wb = Application.Workbooks.Open( path + `\\${name}.xlsx`)
  49.                 let tmp = wb.Sheets("Sheet1").Range("a2").CurrentRegion.Value2.slice(1)
  50.                 tmp = tmp.map(v => readLine(v)).flat().filter(v => v[0])
  51.                 tmp = tmp.map (v => [...v,name])
  52.                 data.push(...tmp)
  53.                 wb.Close()               
  54.    })
  55.    return data
  56. }
复制代码

回复

使用道具 举报

62#
发表于 2024-1-24 17:25:33 | 只看该作者
学习学习
回复

使用道具 举报

63#
发表于 2024-1-24 17:27:55 | 只看该作者
大神还是多,以后有不懂有指望了
回复

使用道具 举报

64#
发表于 2024-4-19 15:55:03 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-13 23:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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