ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 求助VBA统计数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-13 19:02 | 显示全部楼层
天真无鞋 发表于 2024-4-13 18:20
非常感谢2位老师,还有一个小小的问题,请教一下,当引用到相同产品型号的时候,当日的数据能否求和,参考 ...
  1. Sub test()
  2. Range("A4:F100").ClearContents
  3. ar = Sheets("数据源").Range("A1").End(4).Row
  4. arr = Sheets("数据源").Range("A2:R" & ar)
  5. Dim brr(1 To 100, 1 To 6)
  6. myr = Array(12, 9, 16, 18, 4)
  7. For i = 1 To ar - 1
  8.     If Int(arr(i, 12)) = [B3] Then
  9.         m = m + 1
  10.         brr(m, 1) = m
  11.         For j = 2 To 6
  12.             brr(m, j) = arr(i, myr(j - 2))
  13.         Next
  14.     End If
  15. Next
  16. If m = 0 Then
  17.    MsgBox "未找到该日期对应的数据!"
  18.    Exit Sub
  19. End If
  20. Set d = CreateObject("Scripting.Dictionary")
  21.     For k = 1 To m
  22.         d(brr(k, 2) & "-" & brr(k, 3) & "-" & brr(k, 4) & "-" & brr(k, 5)) = d(brr(k, 2) & "-" & brr(k, 3) & "-" & brr(k, 4) & "-" & brr(k, 5)) + Val(brr(k, 6))
  23.     Next
  24. k = d.keys
  25. t = d.items
  26. [A4].Resize(1, 6) = Array("No", "收货日期", "产品型号", "拉别", "工程师", "数量")
  27. For l = 1 To d.Count
  28.      Cells(l + 4, 1) = l
  29. Next
  30. [B5].Resize(d.Count, 1) = Application.Transpose(k)
  31. [B5].Resize(d.Count, 1).TextToColumns other:=True, otherchar:="-"
  32. [F5].Resize(d.Count, 1) = Application.Transpose(t)
  33. Set d = Nothing
  34. End Sub
复制代码

vba-统计.zip

39.67 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-4-13 19:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ykcbf1100 于 2024-4-13 19:39 编辑
天真无鞋 发表于 2024-4-13 18:20
非常感谢2位老师,还有一个小小的问题,请教一下,当引用到相同产品型号的时候,当日的数据能否求和,参考 ...

改好了。。。。

vba-统计.7z

38.73 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-4-13 19:32 | 显示全部楼层
本帖最后由 ykcbf1100 于 2024-4-13 20:27 编辑

代码更新一下,同型号则累计

  1. Sub ykcbf()   '//2024.4.13
  2.     Dim arr, brr
  3.     Application.ScreenUpdating = False
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     With Sheets("汇总")
  6.         rq = Format((.[b3].Value), "yyyy/m/d")
  7.         .[a5:f10000].ClearContents
  8.     End With
  9.     On Error Resume Next
  10.    
  11.     b = [{99,12,9,16,18,4}]
  12.     m = 0
  13.     With Sheets("数据源")
  14.         .AutoFilterMode = False
  15.         r = .Cells(.Rows.Count, 1).End(xlUp).Row
  16.         arr = .[a1].Resize(r, 26)
  17.         For i = 2 To UBound(arr)
  18.             rq1 = Format(arr(i, 12), "yyyy/m/d")
  19.             If rq1 = rq Then
  20.                 s = arr(i, 9)
  21.                 If Not d.exists(s) Then
  22.                     m = m + 1
  23.                     d(s) = Array(m, arr(i, 12), s, arr(i, 16), arr(i, 18), arr(i, 4))
  24.                 Else
  25.                     t = d(s)
  26.                     t(5) = t(5) + arr(i, 4)
  27.                     d(s) = t
  28.                 End If
  29.             End If
  30.         Next
  31.     End With
  32.     With Sheets("汇总")
  33.         .[a5].Resize(m, 6) = Application.Rept(d.Items, 1)
  34.     End With
  35.     Application.ScreenUpdating = True
  36.     MsgBox "OK!"
  37. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-13 19:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
字典加数组、。。

TA的精华主题

TA的得分主题

发表于 2024-4-13 20:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
关键字:where+group by
GIF 2024-04-13 20-09-43.gif

vba-统计.zip

36.74 KB, 下载次数: 3

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-13 20:11 | 显示全部楼层
Sub limont()
    Dim Cn As Object, StrSQL$
    Set Cn = CreateObject("Adodb.Connection")
    Cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;Hdr=No';Data Source=" & ThisWorkbook.FullName
    StrSQL = "Select First(F12),F9,First(F16),First(F18),Sum(F4) From [数据源$A2:BM] Where Int(F12)=#" & Range("B3") & "# Group By F9"
    Range("B5").CopyFromRecordset Cn.Execute(StrSQL)
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-13 20:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常感谢各位

TA的精华主题

TA的得分主题

发表于 2024-4-13 20:34 | 显示全部楼层
image.png

image.png

vba-统计.zip

37.48 KB, 下载次数: 8

TA的精华主题

TA的得分主题

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

vba-统计.zip

38.01 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-4-13 22:05 | 显示全部楼层
  1. Sub 汇总()
  2. Dim arr, brr, i, j, r, sa, d
  3. Set d = CreateObject("scripting.dictionary")
  4. With Sheet3
  5.     r = .Cells(Rows.Count, 1).End(xlUp).Row
  6.     arr = .Range("a1:bm" & r)
  7. End With
  8. ReDim brr(1 To UBound(arr), 1 To 6)
  9. shrq = Sheet8.[b3].Value
  10. For i = 2 To UBound(arr)
  11.     rq = CDate(Format(arr(i, 12), "yyyy-mm-dd"))
  12.     If shrq = rq Then
  13.         sa = rq & "|" & arr(i, 9) & "|" & arr(i, 16) & "|" & arr(i, 18)
  14.         d(sa) = d(sa) + arr(i, 4)
  15.     End If
  16. Next
  17. For Each ka In d.keys
  18.     xa = Split(ka, "|")
  19.     n = n + 1
  20.     brr(n, 1) = n
  21.     brr(n, 2) = xa(0)
  22.     brr(n, 3) = xa(1)
  23.     brr(n, 4) = xa(2)
  24.     brr(n, 5) = xa(3)
  25.     brr(n, 6) = d(ka)
  26. Next
  27. With Sheet8
  28.     .UsedRange.Cells.Offset(3).ClearContents
  29.     .[a5].Resize(n, 6) = brr
  30. End With
  31. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 16:44 , Processed in 0.050695 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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