Excel精英培训网

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

[已解决]请高手编写个VBA汇总,要求在“问题”文件中,谢谢!!!

[复制链接]
发表于 2012-8-16 22:18 | 显示全部楼层 |阅读模式
汇总.rar (5.78 KB, 下载次数: 23)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-8-16 22:46 | 显示全部楼层
请修改一下问题或数据源可以吗?谁跟谁怎么弄请明确。
回复

使用道具 举报

发表于 2012-8-16 22:56 | 显示全部楼层
要汇总的文件只有表1和表2吗?还是要汇总的文件有很多个?
回复

使用道具 举报

 楼主| 发表于 2012-8-16 23:27 | 显示全部楼层
梅一枝 发表于 2012-8-16 22:46
请修改一下问题或数据源可以吗?谁跟谁怎么弄请明确。

统计条件是按“问题”文件的A3和A4来统计。
统计的数据源是表1和表2
统计出来的数据存放在“问题”文件的B3至G4区域

就是说:按“问题”文件的A3和A4中的值为条件,到“表1”和“表2”中去统计,统计结果应是下表红色数据
编号
进库
出库数据1
出库数据2
出库数据3
出库数据4
出库数据5
01
704
70
6
143
85
121
02
5973
149
103
227
70
104

回复

使用道具 举报

 楼主| 发表于 2012-8-16 23:28 | 显示全部楼层
柳如烟 发表于 2012-8-16 22:56
要汇总的文件只有表1和表2吗?还是要汇总的文件有很多个?

只有二个文件,但二个文件中的记录有很多。
回复

使用道具 举报

发表于 2012-8-16 23:49 | 显示全部楼层    本楼为最佳答案   
qdzbk 发表于 2012-8-16 23:28
只有二个文件,但二个文件中的记录有很多。

  1. Sub 统计()
  2.     Dim arr, arr1(), d, i&, j%, k%, mypath$, b As Boolean
  3.     Set d = CreateObject("scripting.dictionary")
  4.     mypath = ThisWorkbook.Path & ""
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False
  7.     On Error Resume Next
  8.     Workbooks("表1.xls").Activate
  9.     Workbooks.Open mypath & "表1.xls"
  10.     arr = Range("a2:f" & Range("a65536").End(3).Row)
  11.     If Err <> 0 Then
  12.         ActiveWorkbook.Close
  13.         Err.Clear
  14.     End If
  15.     For i = 1 To UBound(arr)
  16.         If Not d.exists(Left(arr(i, 1), 2)) Then
  17.             k = k + 1
  18.             d(Left(arr(i, 1), 2)) = k
  19.             ReDim Preserve arr1(1 To 7, 1 To k)
  20.             arr1(1, k) = Left(arr(i, 1), 2)
  21.         End If
  22.         If Left(arr(i, 2), 2) = Left(arr(i, 1), 2) Then
  23.             For j = 3 To UBound(arr, 2)
  24.                 arr1(2, d(Left(arr(i, 1), 2))) = arr1(2, d(Left(arr(i, 1), 2))) + arr(i, j)
  25.             Next
  26.         Else
  27.             For j = 3 To UBound(arr, 2)
  28.                 arr1(j, d(Left(arr(i, 1), 2))) = arr1(j, d(Left(arr(i, 1), 2))) + arr(i, j)
  29.             Next
  30.         End If
  31.     Next
  32.     Workbooks("表2.xls").Activate
  33.     Workbooks.Open mypath & "表2.xls"
  34.     arr = Range("a2:f" & Range("a65536").End(3).Row)
  35.     If Err <> 0 Then ActiveWorkbook.Close
  36.     For i = 1 To UBound(arr)
  37.         arr1(7, d(Left(arr(i, 1), 2))) = arr1(7, d(Left(arr(i, 1), 2))) + arr(i, 3)
  38.     Next
  39.     ThisWorkbook.Activate
  40.     Range("a:a").NumberFormat = "@"
  41.     With Range("a3").Resize(k, 7)
  42.         .ClearContents
  43.         .Value = Application.Transpose(arr1)
  44.     End With
  45.     Application.DisplayAlerts = True
  46.     Application.ScreenUpdating = True
  47. End Sub
复制代码
点击"统计"按钮就可以了。

汇总.rar

22.04 KB, 下载次数: 9

回复

使用道具 举报

发表于 2012-8-16 23:55 | 显示全部楼层
前辈给您回复的代码 可以实现您效果吗?如果满意请评最佳答案谢谢
回复

使用道具 举报

发表于 2012-8-17 08:04 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 19:47 , Processed in 0.490634 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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