ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: 月落天涯

[求助] 求助如何统计订单总量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-10-3 18:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 统计()
Dim arr, brr, i, j, r, sa, d, n
Set d = CreateObject("scripting.dictionary")
arr = ThisWorkbook.Sheets("订单明细").Range("a3").CurrentRegion
ReDim brr(1 To UBound(arr), 1 To 6)
For i = 2 To UBound(arr)
    sa = arr(i, 4) & "|" & arr(i, 5)
    If Len(arr(i, 4)) Then
        If Not d.exists(sa) Then
            n = n + 1
            d(sa) = n
            brr(n, 1) = n
            brr(n, 2) = arr(i, 4)
            brr(n, 3) = arr(i, 5)
            brr(n, 4) = arr(i, 6)
            brr(n, 5) = arr(i, 7)
            brr(n, 6) = arr(i, 8)
        Else
            m = d(sa)
            brr(m, 5) = brr(m, 5) + arr(i, 7)
        End If
    End If
Next
With Sheets("统计")
    .UsedRange.Offset(1).Clear
    .Range("a5").Resize(n, 6) = brr
End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-10-3 18:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参与一下。。。

统计.zip

20.36 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2025-10-3 22:50 | 显示全部楼层
请用最新版wps
  1. function 汇总订单数量() {
  2.     // 获取源数据
  3.     var st = Sheets("订单明细");
  4.     var sd = st.Range("A3:.H999999").Value2;
  5.    
  6.     // 创建映射表用于分组汇总
  7.     var sm = new Map();
  8.     var sh = sd[0];
  9.     var mi = sh.indexOf("物料名称");
  10.     var si = sh.indexOf("规格");
  11.     var ui = sh.indexOf("单位");
  12.     var qi = sh.indexOf("订单数量");
  13.    
  14.     // 遍历源数据行(跳过标题行)
  15.     for (var i = 1; i < sd.length; i++) {
  16.         var sr = sd[i];
  17.         if (!sr || sr.length === 0) continue;
  18.         
  19.         var mn = sr[mi];
  20.         var sp = sr[si];
  21.         var un = sr[ui];
  22.         var qt = sr[qi] || 0;
  23.         
  24.         // 创建唯一键
  25.         var ky = `${mn}|${sp}|${un}`;
  26.         
  27.         // 更新汇总数量
  28.         if (sm.has(ky)) {
  29.             sm.set(ky, sm.get(ky) + qt);
  30.         } else {
  31.             sm.set(ky, qt);
  32.         }
  33.     }
  34.    
  35.     // 构建结果数组
  36.     var sa = [
  37.         ["序号", "物料名称", "规格", "单位", "合计数量", "备注"]
  38.     ];
  39.    
  40.     var sn = 1;
  41.     sm.forEach((qt, ky) => {
  42.         var [mn, sp, un] = ky.split("|");
  43.         sa.push([sn++, mn, sp, un, qt, ""]);
  44.     });
  45.    
  46.     // 输出结果到统计表
  47.     var tt = Sheets("统计");
  48.     var tc = tt.Range("A4");
  49.     tc.Resize(sa.length, sa[0].length).Value2 = sa;
  50.    
  51.     console.log("订单数量汇总完成");
  52. }
复制代码

TA的精华主题

TA的得分主题

发表于 2025-10-4 07:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.jpg

TA的精华主题

TA的得分主题

发表于 2025-10-4 08:03 | 显示全部楼层

你这个感觉还是停留在VBA的思维,虽说for+if走天下,但是JS有很多有意思的特性,解决问题上简单优雅

image.png

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-10-4 08:10 | 显示全部楼层
都是大神,学习中!!!!!!!!!!!!!!!!!

TA的精华主题

TA的得分主题

发表于 2025-10-4 08:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
image.png
=GROUPBY(订单明细!D4:.F99,订单明细!G4:.G99,SUM,,0)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-10-5 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用excel函数公式就能实现啊,用不到vba
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-11-18 18:04 , Processed in 0.026819 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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