Excel精英培训网

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

请大神帮忙 vba 汇总统计

[复制链接]
发表于 2016-2-25 09:54 | 显示全部楼层 |阅读模式
sale.png

将各分部的数据 汇总统计到汇总表

详细数据有天津上海北京  等数据表

表的标题都是一样的

效果:1.将目录下面的所有excel表格 合到汇总一个工作簿 其它表名称同原来工作簿名称代替
           2.统计分表中所有型号每周数量和 如k305 第一周入多少之和

汇总.zip

44.95 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2016-2-25 10:23 | 显示全部楼层
Sub 考勤汇总()
Dim arr As Variant
Dim d, d1 As Object
Dim i As Integer
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("scripting.dictionary")
Dim sh As Worksheet
For Each sh In Worksheets
If sh.Name <> "汇总" Then
arr = sh.Range("a4").CurrentRegion
For i = 2 To UBound(arr)
d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 2)
d1(arr(i, 1)) = d1(arr(i, 1)) + arr(i, 3)
Next
End If
With Sheets("汇总")
.Rows("4:5000").ClearContents
.Columns(1).Cells(.Columns(1).Cells.Count).End(xlUp).Offset(1).Resize(d.Count, 1) = Application.Transpose(d.keys)
.Columns(2).Cells(.Columns(2).Cells.Count).End(xlUp).Offset(1).Resize(d.Count, 1) = Application.Transpose(d.items)
.Columns(3).Cells(.Columns(3).Cells.Count).End(xlUp).Offset(1).Resize(d1.Count, 1) = Application.Transpose(d1.items)
End With
Next
End Sub
这个代码 那个大师帮忙改下  
回复

使用道具 举报

发表于 2016-2-25 10:48 | 显示全部楼层
  1. Sub 导入文件()
  2.     Application.ScreenUpdating = False
  3.     Dim Filename, wb As Workbook, Sht As Worksheet
  4.     Filename = Dir(ThisWorkbook.Path & "\*.xls")
  5.     Dim brr(1 To 1000, 1 To 15)
  6.     Set d = CreateObject("scripting.dictionary")
  7.     Do While Filename <> ""
  8.         If Filename <> ThisWorkbook.Name Then
  9.             fn = ThisWorkbook.Path & "" & Filename
  10.             Set wb = Workbooks.Open(fn)
  11.             wb.Worksheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
  12.             With ActiveSheet
  13.                 .Name = Split(wb.Name, ".")(0)
  14.                 r = .[a65536].End(3).Row
  15.                 If r >= 4 Then
  16.                     arr = .Range("a4:o" & .[a65536].End(3).Row)
  17.                     For i = 1 To UBound(arr)
  18.                         x = arr(i, 1)
  19.                         If Len(x) > 0 Then
  20.                             If Not d.exists(x) Then
  21.                                 n = n + 1
  22.                                 d(x) = n
  23.                                 brr(n, 1) = x
  24.                             End If
  25.                             p = d(x)
  26.                             For j = 2 To UBound(arr, 2)
  27.                                 If arr(i, j) <> 0 Then brr(p, j) = brr(p, j) + arr(i, j)
  28.                             Next
  29.                         End If
  30.                     Next
  31.                 End If
  32.             End With
  33.             wb.Close False
  34.         End If
  35.         Filename = Dir
  36.     Loop
  37.     Set Sht = Nothing
  38.     With Sheet1
  39.         .[a4:o1000].ClearContents
  40.         .[a4].Resize(n, 15) = brr
  41.         .Activate
  42.     End With
  43.     Application.ScreenUpdating = True
  44. End Sub
复制代码

汇总.rar

39.01 KB, 下载次数: 13

回复

使用道具 举报

 楼主| 发表于 2016-2-25 10:56 | 显示全部楼层
grf1973 发表于 2016-2-25 10:48

  感谢  感谢  感谢 !
回复

使用道具 举报

 楼主| 发表于 2016-2-25 12:37 | 显示全部楼层
本帖最后由 yaohyong 于 2016-2-25 12:40 编辑
test.zip (71.43 KB, 下载次数: 4)

如果数据行中有公式想跳过这行
比如不计算海口1表中176行
应该怎么做呢
回复

使用道具 举报

发表于 2016-2-25 13:23 | 显示全部楼层
加个判断,把A列含“计”的去掉。

test.rar

74.25 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2016-2-25 13:32 | 显示全部楼层
grf1973 发表于 2016-2-25 13:23
加个判断,把A列含“计”的去掉。

{:1112:}  谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:43 , Processed in 0.393628 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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