ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 麻烦的数据汇总,请帮助。每天都要这样处理,好麻烦

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-14 17:01 | 显示全部楼层 |阅读模式
各位看一下,附件中的求助,每次处理好麻烦,都要手功去处理,希望能够VBA一次得到橙色数据的结果



麻烦的汇总.zip (59.91 KB, 下载次数: 20)

TA的精华主题

TA的得分主题

发表于 2016-1-14 17:29 | 显示全部楼层
这个可以通过SQL很方便解决,有时间测试下

TA的精华主题

TA的得分主题

发表于 2016-1-14 17:57 | 显示全部楼层
商品个数的计算,以哪列作为识别依据?

TA的精华主题

TA的得分主题

发表于 2016-1-14 18:06 | 显示全部楼层
  1. Sub test()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     With Sheets("sheet1")
  4.         arr = .[a1].CurrentRegion
  5.         For i = 2 To UBound(arr)
  6.             x = arr(i, 1) & arr(i, 2)
  7.             If Not d.exists(x) Then
  8.                 ReDim brr(1 To 3)
  9.                 brr(1) = arr(i, 3)
  10.                 brr(2) = arr(i, 5)
  11.             Else
  12.                 brr = d(x)
  13.                 brr(1) = brr(1) + arr(i, 3)
  14.                 brr(2) = brr(2) + arr(i, 5)
  15.             End If
  16.             d(x) = brr
  17.         Next
  18.         ReDim crr(1 To 5, 1 To 3)
  19.         For Each k In d.keys
  20.             t = d(k)
  21.             a = t(2) / t(1)
  22.             s = IIf(a > 10000, 5, IIf(a > 5000, 4, IIf(a > 3000, 3, IIf(a > 1000, 2, 1))))
  23.             crr(s, 1) = crr(s, 1) + 1
  24.             crr(s, 2) = crr(s, 2) + t(1)
  25.             crr(s, 3) = crr(s, 3) + t(2)
  26.         Next
  27.         .[i16].Resize(5, 3).ClearContents
  28.         .[i16].Resize(5, 3) = crr
  29.     End With
  30. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-1-14 18:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub yy() 'hlly888
  2. Range("i2:k65536").ClearContents
  3. Application.ScreenUpdating = False
  4. Dim dc As Object, arr, brr(), i&, w, s&, a, c, crr(1 To 6, 1 To 5)
  5. Set dc = CreateObject("scripting.dictionary")
  6. arr = [a1].CurrentRegion
  7. ReDim brr(1 To UBound(arr), 1 To 5)
  8.    
  9.     For i = 2 To UBound(arr)
  10.         a = arr(i, 1) & arr(i, 2)
  11.         w = dc(a)
  12.         If w = "" Then
  13.            s = s + 1: dc(a) = s
  14.            brr(s, 1) = arr(i, 1)
  15.            brr(s, 2) = arr(i, 2)
  16.            brr(s, 3) = arr(i, 3)
  17.            brr(s, 4) = arr(i, 5)
  18.            brr(s, 5) = brr(s, 4) / brr(s, 3)
  19.         Else
  20.            brr(w, 3) = brr(w, 3) + arr(i, 3)
  21.            brr(w, 4) = brr(w, 4) + arr(i, 5)
  22.            brr(w, 5) = brr(w, 4) / brr(w, 3)
  23.         End If
  24.     Next
  25.     For i = 1 To s
  26.         If brr(i, 5) < 1000 Then c = 1
  27.         If brr(i, 5) >= 1000 And brr(i, 5) < 3000 Then c = 2
  28.         If brr(i, 5) >= 3000 And brr(i, 5) < 5000 Then c = 3
  29.         If brr(i, 5) >= 5000 And brr(i, 5) < 10000 Then c = 4
  30.         If brr(i, 5) >= 10000 Then c = 5
  31.         crr(c, 1) = crr(c, 1) + 1: crr(c, 2) = crr(c, 2) + brr(i, 3): crr(c, 3) = crr(c, 3) + brr(i, 4)
  32.         crr(6, 2) = crr(6, 2) + brr(i, 3): crr(6, 3) = crr(6, 3) + brr(i, 4)
  33.     Next
  34.     crr(6, 1) = s

  35. [i2].Resize(6, 3) = crr
  36. Application.ScreenUpdating = True
  37. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-1-14 18:29 | 显示全部楼层
麻烦的汇总.zip (124.57 KB, 下载次数: 14)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-14 20:14 | 显示全部楼层

多谢,但是你的代码和chenbiao2012老师的有一点差异。同时和我删除重复后计算出来的也有差异不知道是哪里的问题了。


1.png


TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-14 20:15 | 显示全部楼层

多谢老师。但是和我删除重复后再统计。有差异。不知道是哪里问题了。如果是浮点精度的话。但是前面 三个的差距范围就太大了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-1-14 20:27 | 显示全部楼层
谢谢各位老师,是我弄错了,结果是正确的,我把单价放进去统计了。所以不正确了。现在把数量与金额放进去后就正确了。。谢谢。

TA的精华主题

TA的得分主题

发表于 2016-1-15 20:03 | 显示全部楼层
统计区间由h16~h20确定

麻烦的汇总.zip

202.08 KB, 下载次数: 8

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-15 06:55 , Processed in 0.046885 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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