ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 在单元格内进行汇总(按N个字段)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-21 20:41 | 显示全部楼层 |阅读模式
本帖最后由 starnew88 于 2024-6-22 11:28 编辑

各位大神:

附件我是按不同厂商,订单号,板台号,物料的发货清单,想在不同组别的第一行汇总,请帮忙看看,我水平有限,想不出来,依我看可能会用到字典或循环变量,目前我是用VBA函数公式做出来的(感觉也是好用的),想比较一下用循环和函数之间速度的差距,记录条数可能比较多,谢谢了!


image.png



999.7z

31.99 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-6-22 09:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-6-22 09:44 | 显示全部楼层
  1. Sub 计算()
  2.     Dim 发货数 As Long
  3.     Dim 标准箱 As Long
  4.     arr = Sheet6.Range("A1:M" & Sheet6.Cells(Rows.Count, "C").End(xlUp).Row)
  5.     ReDim brr(1 To UBound(arr) - 1, 1 To 4)
  6.     For i = 2 To UBound(arr)
  7.         k = k + 1
  8.         发货数 = arr(i, 4)
  9.         标准箱 = arr(i, 9)
  10.         s = 计算箱数(发货数, 标准箱)
  11.         s2 = Split(s, ",")
  12.         For j = 1 To 4
  13.             brr(k, j) = s2(j - 1)
  14.         Next
  15.     Next
  16.     Sheet6.Range("j2:m10000").ClearContents
  17.     Sheet6.Range("J2").Resize(k, 4) = brr
  18. End Sub
  19. Function 计算箱数(总数量 As Long, 标准箱数量 As Long) As String
  20.     Dim 整箱数 As Long
  21.     Dim 尾数 As Long
  22.     Dim 总箱数 As Long
  23.     Dim 板台总箱数 As Long
  24.     整箱数 = 总数量 \ 标准箱数量
  25.     尾数 = 总数量 Mod 标准箱数量
  26.     总箱数 = 整箱数
  27.     If 尾数 > 0 Then
  28.         总箱数 = 总箱数 + 1
  29.         板台总箱数 = 总箱数
  30.     End If
  31.     计算箱数 = 整箱数 & "," & 尾数 & "," & 总箱数 & "," & 板台总箱数
  32. End Function

复制代码

和你列的结果不一样.



999.rar

37.03 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-6-22 09:47 | 显示全部楼层
图片.png
图片.png 结果不一样....没时间检查,出去了

TA的精华主题

TA的得分主题

发表于 2024-6-22 09:50 | 显示全部楼层
图片.png 修正最后1个数量

999.rar

38.43 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-6-22 10:07 | 显示全部楼层
  1. Sub test()
  2.     Dim r%, i%
  3.     Dim arr, brr
  4.     Dim d As Object
  5.     Set d = CreateObject("scripting.dictionary")
  6.     With Worksheets("本批发货 2")
  7.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  8.         .Range("j2:m" & r).ClearContents
  9.         arr = .Range("a2:n" & r)
  10.         For i = 1 To UBound(arr)
  11.             xm = arr(i, 1) & "+" & arr(i, 2) & "+" & arr(i, 5)
  12.             If Not d.exists(xm) Then
  13.                 ReDim brr(1 To 2)
  14.                 brr(1) = i
  15.             Else
  16.                 brr = d(xm)
  17.             End If
  18.             brr(2) = brr(2) + arr(i, 4)
  19.             d(xm) = brr
  20.         Next
  21.         For Each aa In d.keys
  22.             brr = d(aa)
  23.             m = brr(1)
  24.             arr(m, 10) = Int(brr(2) / arr(m, 9))
  25.             arr(m, 11) = brr(2) Mod arr(m, 9)
  26.             If Len(arr(m, 11)) <> 0 Then
  27.                 arr(m, 12) = arr(m, 10) + 1
  28.             Else
  29.                 arr(m, 12) = arr(m, 10)
  30.             End If
  31.             arr(m, 13) = arr(m, 12)
  32.         Next
  33.         .Range("a2").Resize(UBound(arr), UBound(arr, 2)) = arr
  34.     End With
  35. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-6-22 10:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没仔细研究M列和L列有什么不同?

999.rar

32.33 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-22 10:13 | 显示全部楼层
老法师,您好,这个太复杂了(是我水平低缘故),我只能看懂50,60%左右,辛苦了,有空我来调试一下,感觉用公式或as报表简单一点,万分感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-22 11:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 starnew88 于 2024-6-22 11:21 编辑
chxw68 发表于 2024-6-22 10:08
没仔细研究M列和L列有什么不同?

谢谢,写的比较ok,只是很多我还没看懂,慢慢研久一下,谢谢
M列是指A和B(即A厂商或B厂商各个板台上总的周转箱数量)
L列是指A和B的每个板台上的各个产品的箱数
即M是各个板台的总数L列是各个产品的总箱数(按产品分类,重复的不显示)
前面的m列公式出错,麻烦老师再看一下?我修正了一下,M前面没汇总,现修正了公式,老师再帮忙看看?
image.png

999.7z

31.99 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-22 11:24 | 显示全部楼层
feilanga 发表于 2024-6-22 09:44
和你列的结果不一样.

您没考虑的问题的汇总性,就是不同厂商的不同板台上面的不同货物(有重复),前面的订单数量是分列,后面的总箱数及尾数要汇总,然后每个板台上的周转箱要汇总多少个(也分不同厂商和板台号),确实有点复杂
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 18:35 , Processed in 0.049482 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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