ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求助:JSA多列数据找重复次数并汇总

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-20 22:04 | 显示全部楼层 |阅读模式
求助高手老师解答:JSA多列数据找重复次数并汇总



cb8e398616358cd056430e4f72c957ba.png



JSA按学号姓名这两列统计次数240920.7z

19.81 KB, 下载次数: 48

TA的精华主题

TA的得分主题

发表于 2024-9-25 08:39 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-25 20:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
kkf5560 发表于 2024-9-25 08:39
供参考.......................

执行快!!!就是看不懂。谢谢:kkf5560老师!给予解答,能再降序排列就完美了。

TA的精华主题

TA的得分主题

发表于 2024-9-26 22:49 | 显示全部楼层
我想以第5行开始,每行向上做数据比较,发现有1行完全重复的,在A列标记出来。

image.jpg

TA的精华主题

TA的得分主题

发表于 2024-9-26 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hmy16888 发表于 2024-9-26 22:49
我想以第5行开始,每行向上做数据比较,发现有1行完全重复的,在A列标记出来。

以前我用VBA是可以的,现在使用国产系统,一定要我用JS宏,我搞不了,谢谢!

TA的精华主题

TA的得分主题

发表于 2024-9-29 12:48 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-29 14:05 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-9-29 21:58 | 显示全部楼层
你的数据不多,速度快慢能分得出来吗?


微信截图_20240929215646.png

  1. function 取重复项并汇总() {
  2.     const st = Date.now();
  3.     const db = Range('B1').CurrentRegion();
  4.     const map = new Map();
  5.     for (let j = 0; j < db[1].length; j += 3) {
  6.         for (let i = 2; i < db.length; i++) {
  7.             const [id, name, amount] = [0, 1, 2].map(n => db[i][j + n]);
  8.             const key = `${String(id).padStart(3, 0)}|${name}`;
  9.             if (id) {
  10.                 if (!map.has(key)) map.set(key, [0, 0]);
  11.                 map.get(key)[0]++;
  12.                 map.get(key)[1] += amount;
  13.             }
  14.         }
  15.     }
  16.     const res = [...map].map(([k, v]) => [...k.split('|'), ...v]).sort((a, b) => a[0] - b[0]);
  17.     res.unshift(['学号', '名字', '重复次数', '额汇总']);
  18.     with (Range('AI1').Resize(res.length, res[0].length)) {
  19.         CurrentRegion.ClearContents();
  20.         Value2 = res;
  21.     }
  22.     alert(`统计完成,耗时【${(Date.now() - st) / 1000}】秒~`);
  23. }
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-30 22:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sunya_0529 发表于 2024-9-29 21:58
你的数据不多,速度快慢能分得出来吗?

祝老师国庆节快乐!!!感谢老师的解答。
如果重复项的数字都相同了,后面额汇总请按降序排序或者升序。
增加这几句话不能执行,是哪里的问题,再次麻烦老师给给予解答。
const dic = arr.reduce((dic, [a,b,c]) => (dic[c] ||= 0, dic[c]++, dic), {})
        arr.sort((a, b) => {
                if (a[2] == b[2]) return b[3] - a[3] || a[4] - b[4] 2再a[8]
    //return dic[b[2]] - dic[a[2]] || b[2].localeCompare(a[2])  
        })

TA的精华主题

TA的得分主题

发表于 2024-10-1 08:30 | 显示全部楼层
金牌1 发表于 2024-9-30 22:56
祝老师国庆节快乐!!!感谢老师的解答。
如果重复项的数字都相同了,后面额汇总请按降序排序或者升序。 ...

在下也是JSA的初学者,算是刚入门吧,不敢称老师,一起学习进步吧


微信截图_20241001082733.png

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-21 18:48 , Processed in 0.046382 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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