Excel精英培训网

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

[已解决]谢谢hrpotter 老师。分类汇总程序报错

[复制链接]
发表于 2012-6-10 12:09 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2012-6-10 13:34 编辑

分类汇总已更新.rar (33.08 KB, 下载次数: 38)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-6-10 12:33 | 显示全部楼层
拿几行数据来举个例子吧,看不懂结果怎么放啊!!!
回复

使用道具 举报

 楼主| 发表于 2012-6-10 12:46 | 显示全部楼层
无聊的疯子 发表于 2012-6-10 12:33
拿几行数据来举个例子吧,看不懂结果怎么放啊!!!

老师:
我在一楼已更新了附件
新增了如下内容:
1\我想要的效果
2\另一个程序,虽然能提取出数据,但是不能把沪A和深A的数据分开,同时,也不能按[分析]的第1\2行固定的标识进行汇总
回复

使用道具 举报

发表于 2012-6-10 12:55 | 显示全部楼层
汇总的是变动资金?
回复

使用道具 举报

 楼主| 发表于 2012-6-10 13:14 | 显示全部楼层
无聊的疯子 发表于 2012-6-10 12:55
汇总的是变动资金?

汇总的是变动资金,

等语句调好后,我还将汇总变动的次数.
回复

使用道具 举报

发表于 2012-6-10 13:21 | 显示全部楼层    本楼为最佳答案   
试下这个,分析表一二行是预先固定的
  1. Sub 分类汇总()
  2.     Dim ar, br, cr, dr
  3.     Dim i As Integer, j As Integer
  4.     Dim d As Object
  5.     Set d = CreateObject("scripting.dictionary")
  6.     With Sheets("结果表")
  7.         ar = .Range("a2:a" & .Range("a65536").End(xlUp).Row)
  8.     End With
  9.     With Sheets("分析")
  10.         ReDim br(1 To 9)
  11.         For i = 2 To 10
  12.             If .Cells(1, i) = "" Then
  13.                 br(i - 1) = .Cells(1, i - 1) & .Cells(2, i)
  14.             Else
  15.                 br(i - 1) = .Cells(1, i) & .Cells(2, i)
  16.             End If
  17.         Next
  18.         cr = Sheets("数据源1").Range("a1").CurrentRegion
  19.         For i = 2 To UBound(cr)
  20.             If cr(i, 18) = "证券买入" Or cr(i, 18) = "证券卖出" Then
  21.                 s = cr(i, 1) & cr(i, 18) & cr(i, 5)
  22.             Else
  23.                 s = cr(i, 1) & cr(i, 18)
  24.             End If
  25.             d(s) = d(s) + cr(i, 12)
  26.         Next
  27.         ReDim dr(1 To UBound(ar), 1 To UBound(br))
  28.         For i = 1 To UBound(ar)
  29.             For j = 1 To UBound(br)
  30.                 dr(i, j) = d(ar(i, 1) & br(j))
  31.             Next
  32.         Next
  33.         .Range("a3:j65536").Clear
  34.         .Range("a3").Resize(UBound(ar), 1) = ar
  35.         .Range("b3").Resize(UBound(dr), UBound(dr, 2)) = dr
  36.     End With
  37. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-18 10:08 , Processed in 0.180674 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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