Excel精英培训网

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

[已解决]求助,按汇总生成新表 (高分悬赏)

[复制链接]
发表于 2013-12-16 15:46 | 显示全部楼层 |阅读模式
30学分
求助,按汇总生成新表
最佳答案
2013-12-16 16:22
请楼主测试:
  1. Sub 汇总()
  2.     Dim ar, re
  3.     Dim i As Integer, str As String, Cnt As Integer, R As Integer
  4.     Dim d As Object
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     ar = Sheets(1).Range("A1").CurrentRegion
  7.     ReDim re(1 To UBound(ar), 1 To UBound(ar, 2))
  8.     For i = 2 To UBound(ar)
  9.         str = ""
  10.         For j = 1 To UBound(ar, 2)
  11.             If j <> 5 Then str = str & ar(i, j)
  12.         Next j
  13.         If Not d.exists(str) Then
  14.             Cnt = Cnt + 1
  15.             d(str) = Cnt
  16.             For j = 1 To UBound(ar, 2)
  17.                 If j <> 5 Then re(Cnt, j) = ar(i, j)
  18.             Next j
  19.         End If
  20.         R = d(str)
  21.         re(R, 5) = re(R, 5) + ar(i, 5)
  22.     Next i
  23.     Sheets(2).Range("A2:G65536").ClearContents
  24.     Sheets(2).[a2].Resize(UBound(re), UBound(re, 2)) = re
  25. End Sub
复制代码

求助.zip

9.1 KB, 下载次数: 20

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-16 15:53 | 显示全部楼层
没有看见生成新表的条件是什么?{:2312:}
回复

使用道具 举报

发表于 2013-12-16 16:15 | 显示全部楼层
sliang28 发表于 2013-12-16 15:53
没有看见生成新表的条件是什么?

学委,他这个是多条件字典就可以了 跟我们练习题一样
回复

使用道具 举报

发表于 2013-12-16 16:21 | 显示全部楼层
看看数据透视表做的行不行?
以“供应商名称”升序排列的汇总结果。
求助.zip (12.42 KB, 下载次数: 11)
回复

使用道具 举报

发表于 2013-12-16 16:22 | 显示全部楼层    本楼为最佳答案   
请楼主测试:
  1. Sub 汇总()
  2.     Dim ar, re
  3.     Dim i As Integer, str As String, Cnt As Integer, R As Integer
  4.     Dim d As Object
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     ar = Sheets(1).Range("A1").CurrentRegion
  7.     ReDim re(1 To UBound(ar), 1 To UBound(ar, 2))
  8.     For i = 2 To UBound(ar)
  9.         str = ""
  10.         For j = 1 To UBound(ar, 2)
  11.             If j <> 5 Then str = str & ar(i, j)
  12.         Next j
  13.         If Not d.exists(str) Then
  14.             Cnt = Cnt + 1
  15.             d(str) = Cnt
  16.             For j = 1 To UBound(ar, 2)
  17.                 If j <> 5 Then re(Cnt, j) = ar(i, j)
  18.             Next j
  19.         End If
  20.         R = d(str)
  21.         re(R, 5) = re(R, 5) + ar(i, 5)
  22.     Next i
  23.     Sheets(2).Range("A2:G65536").ClearContents
  24.     Sheets(2).[a2].Resize(UBound(re), UBound(re, 2)) = re
  25. End Sub
复制代码

点评

d(str) = Cnt 可以写成d(str) =d.count+1 就少个变量  发表于 2013-12-16 16:29
看明白了,汇总一下总价即可.下棋  发表于 2013-12-16 16:27
回复

使用道具 举报

发表于 2013-12-16 16:24 | 显示全部楼层
就是按C列来汇总实收总价?
回复

使用道具 举报

发表于 2013-12-16 16:25 | 显示全部楼层
他是想把C列中相同的累加
回复

使用道具 举报

 楼主| 发表于 2013-12-17 09:10 | 显示全部楼层
CheryBTL 发表于 2013-12-16 16:22
请楼主测试:

想问一下,这是按什么求和汇总的,(我的要求是按发-票-号求和汇总)
请把语句标注一下,我怕以后表格有变化时看不明白,
再有一个问题就是,你汇总后的发-票-号前面的0没有了,应该是,原来是什么样的汇总出来也要什么样的,谢谢,你这个基本是我想要的答案,帮忙再给修改一下,谢谢了
回复

使用道具 举报

 楼主| 发表于 2013-12-17 09:11 | 显示全部楼层
上清宫主 发表于 2013-12-16 16:24
就是按C列来汇总实收总价?

是的就这样的
回复

使用道具 举报

发表于 2013-12-17 09:17 | 显示全部楼层
yewei113 发表于 2013-12-17 09:10
想问一下,这是按什么求和汇总的,(我的要求是按发-票-号求和汇总)
请把语句标注一下,我怕以后表格 ...

就按总价之外的所有条件汇总的,若票号一样时,其它数据一样的话,就是按票号汇总了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 22:08 , Processed in 0.321670 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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