Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2813|回复: 10

[已解决]汇总求助

[复制链接]
发表于 2011-11-3 13:36 | 显示全部楼层 |阅读模式
求助:

      自动汇总代码编写求助,详见附件。
       汇总求助.rar (7.49 KB, 下载次数: 65)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-3 15:34 | 显示全部楼层

  1. Private Sub CommandButton1_Click()
  2.     Dim A(), B(), C(), i%, j%, k%, l%

  3.     With Sheets("sheet1")
  4.         A = .Range("a5:ah" & .Range("c5").End(xlDown).Row).Value
  5.     End With
  6.     With Sheets("sheet2")
  7.         B = .Range("a1:B" & .Range("A1").End(xlDown).Row).Value
  8.     End With
  9.     With Sheets("库存明细")
  10.         C = .Range("a3:ag" & .Range("a3").End(xlDown).Row).Value
  11.     End With

  12.     For i = 2 To UBound(C)
  13.         For j = 3 To UBound(C, 2)
  14.             C(i, j) = 0    '防止连续运行时,把sheet3表中的结果累计进来
  15.             For k = 2 To UBound(B)
  16.                 If B(k, 2) = C(i, 1) Then
  17.                     For l = 1 To UBound(A)
  18.                         If A(l, 1) = B(k, 1) Then
  19.                             C(i, j) = C(i, j) + A(l, j + 1)
  20.                         End If
  21.                     Next l
  22.                 End If
  23.             Next k
  24.         Next j
  25.     Next i
  26.     Sheets("库存明细").Range("a3").Resize(UBound(C), UBound(C, 2)) = C
  27. End Sub
复制代码
汇总求助2.rar (13.53 KB, 下载次数: 17)
回复

使用道具 举报

发表于 2011-11-3 16:10 | 显示全部楼层
本帖最后由 liuts 于 2011-11-3 16:14 编辑

路过学习的
回复

使用道具 举报

 楼主| 发表于 2011-11-3 16:17 | 显示全部楼层
回复 liuts 的帖子

非常感谢!
假设
     1.我没有设定库存明细  
      2. sheet1和sheet2的行数要增加
然后要达到库存明细表的结果和格式

请问该如何实现呀?
回复

使用道具 举报

发表于 2011-11-3 16:24 | 显示全部楼层    本楼为最佳答案   
  1. Sub justtest()
  2.     Dim D As New Dictionary, Arr, i&, j As Byte, ArrR(), K&
  3.     '定义变量,字典对象前期绑定,需引用VBE工具下MS SCRIPTING.RUNTIME
  4.     Arr = Sheet2.Range("A1").CurrentRegion.Value
  5.     '获取代码与进货名称关系表数据
  6.     On Error GoTo 100 '设置错误跳转
  7.     For i = 2 To UBound(Arr) '循环
  8.         D.Add Arr(i, 1), Arr(i, 2) '添加代号入字典项目,如果重复则生成错误
  9.     Next i
  10.     With Sheet1 '代号库存日明细写入数组,方便后续调用处理
  11.         Arr = .Range("A5:ah" & .Cells(.Rows.Count, 1).End(3).Row).Value
  12.     End With
  13.     For i = 1 To UBound(Arr) Step 3 '循环库存项目
  14.         If D.Exists(Arr(i, 1)) Then '如果代号在关系表中存在,则
  15.             If Not D.Exists(D(Arr(i, 1))) Then '如果进货名称在结果中不存在,则
  16.                 K = K + 1: D.Add D(Arr(i, 1)), K '添加进货名称入字典项目KEY,同时对行号进行累加标识
  17.                 ReDim Preserve ArrR(1 To 33, 1 To K) '动态定义结果存放数组
  18.                 ArrR(1, K) = D(Arr(i, 1)): ArrR(2, K) = Arr(i, 3) '赋数组第一二项值
  19.             End If
  20.             For j = 4 To UBound(Arr, 2) '循环日记录
  21.                 If Len(Arr(i, j)) Then '如果非空
  22.                     ArrR(j - 1, D(D(Arr(i, 1)))) = ArrR(j - 1, D(D(Arr(i, 1)))) + Arr(i, j)
  23.                     '则累加对应的结果数组位置元素的数量
  24.                 End If
  25.             Next j
  26.         End If
  27.     Next i
  28.     With Sheet3
  29.         .Range("a4:ag" & .Rows.Count).Clear '清空结果区域
  30.         With .Range("a4").Resize(K, 33)
  31.             .Value = Application.Transpose(ArrR) '返回结果
  32.             .Borders.LineStyle = xlContinuous '设置边框
  33.         End With
  34.     End With
  35.     Exit Sub
  36. 100     MsgBox "代号不惟一,请确认后重新运行程序。": End
  37. '对代号不惟一进行提示,并结束程序。
  38. End Sub
复制代码

请看附件效果:
汇总求助.rar (15.82 KB, 下载次数: 28)
回复

使用道具 举报

 楼主| 发表于 2011-11-3 16:52 | 显示全部楼层
回复 liuguansky 的帖子

谢谢liuguansky

再麻烦你帮忙解决一下这个帖子,和本帖类似的
  http://www.excelpx.com/thread-205614-1-2.html

点评

类似的话,按照这个思想, 自己处理下嘛,解释都很清楚了。  发表于 2011-11-3 16:55
回复

使用道具 举报

发表于 2011-11-3 17:36 | 显示全部楼层
其实这个结果,用数据透视表也能完成了
QQ截图20111103173522.jpg
回复

使用道具 举报

 楼主| 发表于 2011-11-3 18:34 | 显示全部楼层
回复 yjqsamol 的帖子

类似,但稍微复杂些呢;
因为自身不具备VB能力,所以求助
回复

使用道具 举报

 楼主| 发表于 2011-11-3 18:35 | 显示全部楼层
回复 yuhe0008 的帖子

数据透视表可以跨表进行吗?求教~
回复

使用道具 举报

 楼主| 发表于 2011-11-3 19:35 | 显示全部楼层
回复 爱疯 的帖子

我的这个文件的编码错在哪里,请教?
汇总求助.rar (23.03 KB, 下载次数: 12)
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 16:58 , Processed in 0.732979 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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