Excel精英培训网

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

[已解决]如何快速汇总

[复制链接]
发表于 2011-11-16 10:41 | 显示全部楼层 |阅读模式
如何顺速的将左边的数据按日期,按客户名称进行汇总。我这里只列示几天的数据,实际上一个月下来有几万条数据。请高手帮助一下。谢谢。
最佳答案
2011-11-16 12:53
  1. Sub aa()
  2.     Dim arr2, arr, arr1(1 To 1000, 1 To 4), x, y, z, k, D, m
  3.     Set D = CreateObject("Scripting.Dictionary")
  4.     arr2 = Range("c" & Range("c65536").End(xlUp).Row & ":d" & Range("c65536").End(xlUp).Row)
  5.     arr = Range("a2:d" & Range("a65536").End(xlUp).Row)
  6.     Range("F1:I10000").ClearContents
  7.     For x = 1 To UBound(arr)
  8.         If D.Exists(arr(x, 2)) Then
  9.             y = D(arr(x, 2))
  10.             arr1(y, 1) = arr(x, 1)
  11.             arr1(y, 2) = arr(x, 2)
  12.             arr1(y, 3) = arr1(y, 3) + arr(x, 3)
  13.             arr1(y, 4) = arr1(y, 4) + arr(x, 4)
  14.         Else
  15.             k = k + 1
  16.             D(arr(x, 2)) = k
  17.             For z = 1 To 4
  18.                 arr1(k, z) = arr(x, z)
  19.             Next z
  20.         End If
  21.     Next x
  22.     Range("f3").Resize(D.Count, 4) = arr1
  23.     m = 3 + D.Count
  24.     Range("f" & m) = "小计"
  25.     Range("f" & m & ":g" & m).MergeCells = True
  26.     Range("h" & m & ":i" & m) = arr2
  27. End Sub

复制代码
新建 Microsoft Office Excel 97-2003 工作表 (3).rar (10.23 KB, 下载次数: 39)

数据汇总1.zip

8.16 KB, 下载次数: 25

发表于 2011-11-16 11:07 | 显示全部楼层
回复

使用道具 举报

发表于 2011-11-16 11:12 | 显示全部楼层
回复

使用道具 举报

发表于 2011-11-16 11:34 | 显示全部楼层
数据汇总index small.rar (11.93 KB, 下载次数: 24)
回复

使用道具 举报

发表于 2011-11-16 12:53 | 显示全部楼层    本楼为最佳答案   
  1. Sub aa()
  2.     Dim arr2, arr, arr1(1 To 1000, 1 To 4), x, y, z, k, D, m
  3.     Set D = CreateObject("Scripting.Dictionary")
  4.     arr2 = Range("c" & Range("c65536").End(xlUp).Row & ":d" & Range("c65536").End(xlUp).Row)
  5.     arr = Range("a2:d" & Range("a65536").End(xlUp).Row)
  6.     Range("F1:I10000").ClearContents
  7.     For x = 1 To UBound(arr)
  8.         If D.Exists(arr(x, 2)) Then
  9.             y = D(arr(x, 2))
  10.             arr1(y, 1) = arr(x, 1)
  11.             arr1(y, 2) = arr(x, 2)
  12.             arr1(y, 3) = arr1(y, 3) + arr(x, 3)
  13.             arr1(y, 4) = arr1(y, 4) + arr(x, 4)
  14.         Else
  15.             k = k + 1
  16.             D(arr(x, 2)) = k
  17.             For z = 1 To 4
  18.                 arr1(k, z) = arr(x, z)
  19.             Next z
  20.         End If
  21.     Next x
  22.     Range("f3").Resize(D.Count, 4) = arr1
  23.     m = 3 + D.Count
  24.     Range("f" & m) = "小计"
  25.     Range("f" & m & ":g" & m).MergeCells = True
  26.     Range("h" & m & ":i" & m) = arr2
  27. End Sub

复制代码
新建 Microsoft Office Excel 97-2003 工作表 (3).rar (10.23 KB, 下载次数: 39)

评分

参与人数 2 +26 收起 理由
macky591 + 10 赞一个!
lisachen + 16 赞一个!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2011-11-16 13:07 | 显示全部楼层
可是我的电脑宏加载不了呀
回复

使用道具 举报

发表于 2011-11-16 14:01 | 显示全部楼层
auqfbgjw 发表于 2011-11-16 13:07
可是我的电脑宏加载不了呀

工具—宏—安全性—低
回复

使用道具 举报

 楼主| 发表于 2011-11-16 14:23 | 显示全部楼层
列数及行数增加,是不是要重新修改宏代码??
回复

使用道具 举报

发表于 2011-11-16 15:14 | 显示全部楼层
auqfbgjw 发表于 2011-11-16 14:23
列数及行数增加,是不是要重新修改宏代码??

行数如果增加不受影响,列数增加要适当修改一下
回复

使用道具 举报

 楼主| 发表于 2011-11-17 08:44 | 显示全部楼层
本帖最后由 auqfbgjw 于 2011-11-17 08:47 编辑

楼上的好,水平好高。现在把附件的格式修改了,列出增加了,麻烦您帮我弄一下吧。昨天编出来数据好像一个客户名称表内就汇总一次,日期显示最后一天的时间。实际要求按天累计的。万分感谢。

数据汇总2011.zip

287.32 KB, 下载次数: 13

回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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