无忧启动论坛

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

求教,Excel表格问题

  [复制链接]
31#
发表于 2024-1-11 18:34:09 | 只看该作者
回复

使用道具 举报

32#
发表于 2024-1-11 19:19:43 | 只看该作者
收藏了,谢谢
回复

使用道具 举报

33#
发表于 2024-1-11 19:25:16 | 只看该作者
学习学习
回复

使用道具 举报

34#
发表于 2024-1-11 20:40:42 | 只看该作者
都是高手啊
回复

使用道具 举报

35#
发表于 2024-1-11 21:02:01 | 只看该作者
过来学习学习
回复

使用道具 举报

36#
发表于 2024-1-11 21:13:49 | 只看该作者
本帖最后由 xsg123456 于 2024-1-11 22:08 编辑
  1. function collectAll(){
  2. let path = ThisWorkbook.Path,
  3. files = ["语文","数学","英语"],
  4. obj = {}
  5. files.forEach(name =>{
  6. let wb = Application.Workbooks.Open( path + `\\${name}.xlsx`)
  7. let tmp = wb.Sheets("Sheet1").Range("a2").CurrentRegion.Value2.slice(1)
  8. tmp.forEach(v => {
  9. let key = [v[0] , v[1] , v[3]]
  10. obj[key] = obj[key]? [...obj[key],v[2]] : [v[2]]
  11. key = [v[5] , v[6] , v[8]]
  12. obj[key] = obj[key]? [...obj[key],v[7]] : [v[7]]
  13. key = [v[10] , v[11] , v[13]]
  14. obj[key] = obj[key]? [...obj[key],v[12]] : [v[12]]
  15. })
  16. wb.Close()
  17. })
  18. let res1 = Object.keys(obj).map(v=>v.split(",")),
  19. res2 = Object.values(obj)
  20. res1.unshift(["学号","姓名","班号"])
  21. res2.unshift(files)
  22. res = res1.map((v,i)=> [v[0],v[1],...res2[i],v[2]]).sort((a,b)=>a[0]-b[0]).filter(v => v[0])
  23. Range("a2").CurrentRegion.ClearContents()
  24. Range("a2").Resize(res.length,res[0].length).Value2 = res

  25. }
复制代码

点评

这是啥 ? 有的地方像vba,感觉又不是  详情 回复 发表于 2024-1-12 08:42
回复

使用道具 举报

37#
发表于 2024-1-11 21:25:06 | 只看该作者



回复

使用道具 举报

38#
发表于 2024-1-11 21:30:58 | 只看该作者
本帖最后由 xsg123456 于 2024-1-11 21:51 编辑

成绩表.7z (24.33 KB, 下载次数: 14)


终于传上了附件
忘记说了,wps下开启宏即可食用
回复

使用道具 举报

39#
发表于 2024-1-11 21:52:38 | 只看该作者
https://www.123pan.com/s/fvglVv-DX2Nv.html
三张成绩表最好统一一列。这样有利于统计、汇总和查漏。
汇总表是根据学号匹配各科成绩的。只要把对应的三科成绩复制到对应的工作表里即可。
如果非要横向三组排列的排版。建议检查无误后,复制一份副本重新排版。

点评

文件中只是一个例子,各个单位的报表非常多,看到的只是冰山一角,都这样改一遍不现实。所以才请教各位高手看看有什么简单的解决办法。  详情 回复 发表于 2024-1-12 09:04
你做的表格不错。  详情 回复 发表于 2024-1-11 22:15
回复

使用道具 举报

40#
发表于 2024-1-11 22:00:28 | 只看该作者
谢谢分享
回复

使用道具 举报

41#
发表于 2024-1-11 22:15:45 | 只看该作者
ppll2030 发表于 2024-1-11 21:52
https://www.123pan.com/s/fvglVv-DX2Nv.html
三张成绩表最好统一一列。这样有利于统计、汇总和查漏。
汇 ...

你做的思路不错。
回复

使用道具 举报

42#
发表于 2024-1-11 22:56:17 | 只看该作者
本帖最后由 xsg123456 于 2024-1-11 23:27 编辑

给你做 原表不动 新表自动生成  自动总分 排名 的一键版

  1. function collectAll(){
  2. Application.ScreenUpdating = false
  3. let path = ThisWorkbook.Path,
  4.      files = ["语文","数学","英语"],
  5.      obj = {} , res = []
  6. files.forEach(name =>{
  7.   let wb = Application.Workbooks.Open( path + `\\${name}.xlsx`)
  8.   let tmp = wb.Sheets("Sheet1").Range("a2").CurrentRegion.Value2.slice(1)
  9.   tmp.forEach(v => {
  10.    let key = [v[0] , v[1]]
  11.    obj[key] = obj[key]? [...obj[key],v[2]] : [v[2]]
  12.    key = [v[5] , v[6] ]
  13.    obj[key] = obj[key]? [...obj[key],v[7]] : [v[7]]
  14.    key = [v[10] , v[11]]
  15.    obj[key] = obj[key]? [...obj[key],v[12]] : [v[12]]
  16.   })
  17.   wb.Close()
  18. })
  19. let res1 = Object.keys(obj).map(v=>v.split(",")),
  20.   res2 = Object.values(obj).map(v => [...v,v.reduce((p,c) => p*1+c*1)])
  21. res1.unshift(["学号","姓名"])
  22. res2.unshift(["语文","数学","英语","总分"])
  23. res = res1.map((v,i)=> [v[0],v[1],...res2[i]]).sort((a,b)=>b[5]-a[5]).filter(v => v[0])
  24. res = res.map((v,i) => {
  25.   if (i == 0) {
  26.    return [...v,"班级排名"]
  27.   }else{
  28.    return [...v,i]
  29.   }
  30. })
  31.     Range("a2").CurrentRegion.ClearContents()
  32. Range("a2").Resize(res.length,res[0].length).Value2 = res
  33. Application.ScreenUpdating = true   
  34. }
复制代码
成绩表.7z (24.45 KB, 下载次数: 20)

点评

你好,最近一直在研究你给的那段代码,就是前几天解决EXCEL汇总的那段代码,实际工作中遇到问题,如果有学生缺考一门或者两门就会造成无法统计,需要怎么修改呢,还请大佬指教一下。 另外学习wps的js在哪里有资料可  详情 回复 发表于 2024-1-21 17:22
需要慢慢消化,谢谢,主要是不常接触,自己又笨。以后有问题还请多指教。  详情 回复 发表于 2024-1-12 08:54
回复

使用道具 举报

43#
发表于 2024-1-12 00:09:53 | 只看该作者
语数外都排版整齐不要分成3版,

然后以语文(随便那个为模板),新建列数学英语成绩
C#引用epplus,写个方法,根据姓名去其他的表中查找对应的成绩并输出在模板对应的成绩栏目,再写个for循环搞定。

点评

基层单位报表就这样的,不是一天两天的事。很难改变。  详情 回复 发表于 2024-1-12 08:56
回复

使用道具 举报

44#
发表于 2024-1-12 08:42:32 | 只看该作者

这是啥 ?  有的地方像vba,感觉又不是

点评

wps支持vba宏的同时也支持js宏,因此可以跨平台使用,国产linux系统可以运行js宏,我们称他为jsa  详情 回复 发表于 2024-1-12 10:19
回复

使用道具 举报

45#
发表于 2024-1-12 08:51:26 | 只看该作者
likeyouli 发表于 2024-1-11 17:17
你也在县里上班啊,,咱们一样
  我学习vba 就是因为经常罗罗数据,,下边报上来的数据,最麻烦的是报 ...

就是呗,上报信息一点都不规范,主要是不认真,还不听话。
回复

使用道具 举报

46#
发表于 2024-1-12 08:54:57 | 只看该作者
xsg123456 发表于 2024-1-11 22:56
给你做 原表不动 新表自动生成  自动总分 排名 的一键版

需要慢慢消化,谢谢,主要是不常接触,自己又笨。以后有问题还请多指教。

点评

这种不规范的表,没法子,只有编程对付  详情 回复 发表于 2024-1-12 10:21
回复

使用道具 举报

47#
发表于 2024-1-12 08:56:13 | 只看该作者
lixiangliuyi 发表于 2024-1-12 00:09
语数外都排版整齐不要分成3版,

然后以语文(随便那个为模板),新建列数学英语成绩

基层单位报表就这样的,不是一天两天的事。很难改变。
回复

使用道具 举报

48#
发表于 2024-1-12 08:59:39 | 只看该作者
学习使用XLOOKUP或VLOOKUP函数,你会发现很多数据都非常方便处理,不过要新版本的OFFICE才支持XLOOKUP。XLOOKUP比VLOOKUP好用,
回复

使用道具 举报

49#
发表于 2024-1-12 09:04:34 | 只看该作者
ppll2030 发表于 2024-1-11 21:52
https://www.123pan.com/s/fvglVv-DX2Nv.html
三张成绩表最好统一一列。这样有利于统计、汇总和查漏。
汇 ...

文件中只是一个例子,各个单位的报表非常多,看到的只是冰山一角,都这样改一遍不现实。所以才请教各位高手看看有什么简单的解决办法。

点评

简单的办法就是统一报表格式。需要数据,就下发一份统一模板填写。 如果你说得上话就这么办,说不上就让说得上话的人去办 在我们单位,数据岗的表格只要不统一,一律发回重做。 影响统计时间的,责任到  详情 回复 发表于 2024-1-12 09:50
回复

使用道具 举报

50#
发表于 2024-1-12 09:13:55 | 只看该作者
好帖!!!!!
回复

使用道具 举报

51#
发表于 2024-1-12 09:50:41 | 只看该作者
20121666 发表于 2024-1-12 09:04
文件中只是一个例子,各个单位的报表非常多,看到的只是冰山一角,都这样改一遍不现实。所以才请教各位高 ...

简单的办法就是统一报表格式。需要数据,就下发一份统一模板填写。
如果你说得上话就这么办,说不上就让说得上话的人去办
在我们单位,数据岗的表格只要不统一,一律发回重做。
影响统计时间的,责任到当地领导。
当然,如果你的例子已经是统一模板,可以考虑用复杂点的vba汇总了。
不管什么办法,都不是万能呢。就比如你的英语表格,是顶行填写的,语文和数学却又留空一行。
填写位置不统一,这个对于自动化也算是个坑了。

点评

看了一下,我的程序可以忽略顶上没空行的问题。少个学号是原始数据就少,我还以为有bug呢  发表于 2024-1-12 10:32
怪不得我统计出来少了一个学号34  发表于 2024-1-12 09:56
主要是我们部门只是配合完成,有些工作是临时的。  详情 回复 发表于 2024-1-12 09:55
回复

使用道具 举报

52#
发表于 2024-1-12 09:55:00 | 只看该作者
ppll2030 发表于 2024-1-12 09:50
简单的办法就是统一报表格式。需要数据,就下发一份统一模板填写。
如果你说得上话就这么办,说不上就让 ...

主要是我们部门只是配合完成,有些工作是临时的。
回复

使用道具 举报

53#
发表于 2024-1-12 10:19:24 | 只看该作者
likeyouli 发表于 2024-1-12 08:42
这是啥 ?  有的地方像vba,感觉又不是

wps支持vba宏的同时也支持js宏,因此可以跨平台使用,国产linux系统可以运行js宏,我们称他为jsa
回复

使用道具 举报

54#
发表于 2024-1-12 10:21:51 | 只看该作者
20121666 发表于 2024-1-12 08:54
需要慢慢消化,谢谢,主要是不常接触,自己又笨。以后有问题还请多指教。

这种不规范的表,没法子,只有编程对付
回复

使用道具 举报

55#
发表于 2024-1-12 16:40:18 | 只看该作者
WPS最新版,直接带工作汇总功能,速度更快

点评

对基础表格有要求的,这种的实现不了。  详情 回复 发表于 2024-1-13 08:02
回复

使用道具 举报

56#
 楼主| 发表于 2024-1-13 08:02:21 | 只看该作者
tanchenglong 发表于 2024-1-12 16:40
WPS最新版,直接带工作汇总功能,速度更快

对基础表格有要求的,这种的实现不了。
回复

使用道具 举报

57#
 楼主| 发表于 2024-1-21 17:22:37 | 只看该作者
xsg123456 发表于 2024-1-11 22:56
给你做 原表不动 新表自动生成  自动总分 排名 的一键版

你好,最近一直在研究你给的那段代码,就是前几天解决EXCEL汇总的那段代码,实际工作中遇到问题,如果有学生缺考一门或者两门就会造成无法统计,需要怎么修改呢,还请大佬指教一下。
另外学习wps的js在哪里有资料可以参考学习,纯属个人爱好,解决一些生活中的小问题的,都需要学习什么

点评

明白您的意思了  详情 回复 发表于 2024-1-21 19:52
我不记得自己的代码了,理论上说我当时写的代码已经考虑了这种缺科的情形,你可以自己测试一下,若有问题我可以修改。js网上一大堆教程,比如菜鸟教程。至于wps 有关api,官网open.wps.cn  详情 回复 发表于 2024-1-21 19:35
回复

使用道具 举报

58#
发表于 2024-1-21 17:31:09 | 只看该作者
fg
回复

使用道具 举报

59#
发表于 2024-1-21 17:31:56 | 只看该作者
Excel表格   前来学习了
回复

使用道具 举报

60#
发表于 2024-1-21 19:35:02 | 只看该作者
本帖最后由 xsg123456 于 2024-1-21 19:54 编辑
123oo456 发表于 2024-1-21 17:22
你好,最近一直在研究你给的那段代码,就是前几天解决EXCEL汇总的那段代码,实际工作中遇到问题,如果有 ...


js网上一大堆教程,比如菜鸟教程。至于wps 有关api,官网open.wps.cn。您说的情况代码修改在下楼
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-2 13:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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