ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 套用别人代码 不可以运行 请高手帮忙看下错在哪了

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-10-29 13:37 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub test()

Dim d As Object, a, b, j%, w!    '定义参数
Dim ss$, n%, x                      '定义参数
ActiveSheet.UsedRange.Offset(2, 0) = ""    '清空第2行以下的单元格。
a = Sheet1.Range(Sheet1.[a2], Sheet1.[i65536].End(xlUp))   '把原始数据所在的表1自A4以下的I列最后的非空单元格区域的值赋给变量a。
Set d = CreateObject("scripting.dictionary")      '创建字典对象d。
ReDim b(1 To UBound(a), 1 To 8)
For i = 1 To UBound(a)                    '在1 和数组a第一维的上界值之间逐一循环
ss = a(i, 2) & a(i, 3) & a(i, 4) & a(i, 5) & a(i, 6) & a(i, 1)   '把不变的内容连起来然后赋给变量ss。
If Not d.Exists(ss) Then      '如果字典d里面不存在ss表示的关键字,那么执行下面的语句。
n = n + 1               '把变量n增加1以后仍然赋给n
d.Add ss, n             '把ss的值作为关键字,n的值作为对应的项一起加入字典d中。n的值实际是关键字的位置次序,如n=1时是第一个关键字;n=2时是第二个关键字。
b(n, 1) = a(i, 2): b(n, 2) = a(i, 3): b(n, 3) = a(i, 4): b(n, 5) = a(i, 4)   '4个语句分别给数组b的各个元素赋以对应的值
b(n, 5) = a(i, 6): b(n, 6) = a(i, 1): b(n, 7) = a(i, 7)     
Else
b(d(ss), 7) = b(d(ss), 7) & "+" & a(i, 7)   
End If
Next
For i = 1 To d.Count     '在字典关键字数目中逐一循环
x = Split(b(i, 7), "+")   '运用VBA函数Split把b(i, 7)按照"+"分割,返回一个下标从零开始的一维数组x。
For j = 0 To UBound(x)    '在上面的x数组之间逐一循环
w = w + x(j)              '把变量w加x(j)数组的一个元素以后仍然赋给w。实际得到x数组的累加值。
Next j
b(i, 8) = b(i, 5) * b(i, 7)    'w求出后经过按要求计算得到的值赋给数组b的第8列元素就是数量和单价的乘积。(数量列)另一句把变量w置0。避免在新一次的循环中误加进去。
Next
[b4].Resize(n, 8) = b     '最后把数组b赋给B4开始的单元格区域。

End Sub


目的是想实现把表1中的数据按照相等的求和以后放在表2中  代码是套用蓝桥版主的  就是不可以运行

字典test.zip

35.02 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2013-10-29 15:04 | 显示全部楼层
这不是我的代码哦。
代码要放在模块里面。

TA的精华主题

TA的得分主题

发表于 2013-10-29 15:30 | 显示全部楼层
  1. Sub lqxs()
  2. Dim Arr, i&, Brr, x$, j&, aa
  3. Dim d, k, t
  4. Set d = CreateObject("Scripting.Dictionary")
  5. Application.DisplayAlerts = False
  6. Sheet2.Activate
  7. [a3:h5000].ClearContents
  8. [a3:h5000].Borders.LineStyle = xlNone
  9. Arr = Sheet1.[a1].CurrentRegion
  10. For i = 2 To UBound(Arr)
  11.     x = Arr(i, 2) & "," & Arr(i, 3) & "," & Arr(i, 4) & "," & Arr(i, 5) & "," & Arr(i, 6) & "," & Arr(i, 1)
  12.     d(x) = d(x) & i & ","
  13. Next
  14. k = d.keys: t = d.items
  15. [a3].Resize(d.Count) = Application.Transpose(k)
  16. [a3].Resize(d.Count).TextToColumns Comma:=True
  17. ReDim Brr(1 To d.Count, 1 To 2)
  18. For i = 0 To UBound(k)
  19.     t(i) = Left(t(i), Len(t(i)) - 1)
  20.     If InStr(t(i), ",") Then
  21.         aa = Split(t(i), ",")
  22.         For j = 0 To UBound(aa)
  23.             Brr(i + 1, 1) = Brr(i + 1, 1) + Arr(aa(j), 7)
  24.             Brr(i + 1, 2) = Brr(i + 1, 2) + Arr(aa(j), 8)
  25.         Next
  26.     Else
  27.         Brr(i + 1, 1) = Arr(t(i), 7)
  28.         Brr(i + 1, 2) = Arr(t(i), 8)
  29.     End If
  30. Next
  31. [g3].Resize(UBound(Brr), 2) = Brr
  32. [a2].CurrentRegion.Borders.LineStyle = 1
  33. Application.DisplayAlerts = True
  34. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-10-29 15:32 | 显示全部楼层
请见附件。

字典test.rar

54.05 KB, 下载次数: 32

TA的精华主题

TA的得分主题

发表于 2018-7-2 11:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
字典多条件多列分类汇总,d(x) = d(x) & i & ","
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-1 14:37 , Processed in 0.035037 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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