Excel精英培训网

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

[已解决]数据统计的VBA求助

[复制链接]
发表于 2016-3-15 11:03 | 显示全部楼层 |阅读模式
本帖最后由 安全网 于 2016-3-15 15:48 编辑

B列的名称是有每日进仓和每日出仓的地名提取,C列的数据是由每日进仓的工作表内对应的地名的数据汇总提取(每日进仓表内K列为空才提取);D列的数据是由每日出仓的工作表内对应的地名的数据汇总提取(每日出仓表内J列为空才提取);E列为上月库存的表格内对应的地名的数据提取:F列等月C+E-D列的值的
最佳答案
2016-3-15 14:39
  1. Sub 提取数据()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Dim brr(1 To 1000, 1 To 6)
  4.     With Sheets("每日出仓")
  5.         r = .[c65536].End(3).Row
  6.         arr = .Range("a1:j" & r)
  7.     End With
  8.     For i = 3 To UBound(arr)
  9.         If Len(arr(i, 9)) = 0 And arr(i, 6) > 0 Then
  10.             x = arr(i, 3)
  11.             If Not d.exists(x) Then
  12.                 n = n + 1
  13.                 d(x) = n
  14.                 brr(n, 1) = n
  15.                 brr(n, 2) = x
  16.             End If
  17.             brr(d(x), 4) = brr(d(x), 4) + arr(i, 6)
  18.         End If
  19.     Next
  20.    
  21.     With Sheets("每日进仓")
  22.         r = .[e65536].End(3).Row
  23.         arr = .Range("a1:k" & r)
  24.     End With
  25.     For i = 3 To UBound(arr)
  26.         If Len(arr(i, 11)) = 0 And arr(i, 8) > 0 Then
  27.             x = arr(i, 5)
  28.             If Not d.exists(x) Then
  29.                 n = n + 1
  30.                 d(x) = n
  31.                 brr(n, 1) = n
  32.                 brr(n, 2) = x
  33.             End If
  34.             brr(d(x), 3) = brr(d(x), 3) + arr(i, 8)
  35.         End If
  36.     Next
  37.    
  38.     With Sheets("上月库存")
  39.         r = .[b65536].End(3).Row
  40.         arr = .Range("a1:c" & r)
  41.     End With
  42.     For i = 3 To UBound(arr)
  43.         x = arr(i, 2)
  44.         If d(x) > 0 Then brr(d(x), 5) = arr(i, 3)
  45.     Next
  46.    
  47.     [a3:f1000] = ""
  48.     [a3].Resize(n, 6) = brr
  49.     [f3].Resize(n, 1).Formula = "=rc[-3]+rc[-1]-rc[-2]"
  50. End Sub
复制代码

数据统计表.zip

225.78 KB, 下载次数: 4

发表于 2016-3-15 14:39 | 显示全部楼层    本楼为最佳答案   
  1. Sub 提取数据()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Dim brr(1 To 1000, 1 To 6)
  4.     With Sheets("每日出仓")
  5.         r = .[c65536].End(3).Row
  6.         arr = .Range("a1:j" & r)
  7.     End With
  8.     For i = 3 To UBound(arr)
  9.         If Len(arr(i, 9)) = 0 And arr(i, 6) > 0 Then
  10.             x = arr(i, 3)
  11.             If Not d.exists(x) Then
  12.                 n = n + 1
  13.                 d(x) = n
  14.                 brr(n, 1) = n
  15.                 brr(n, 2) = x
  16.             End If
  17.             brr(d(x), 4) = brr(d(x), 4) + arr(i, 6)
  18.         End If
  19.     Next
  20.    
  21.     With Sheets("每日进仓")
  22.         r = .[e65536].End(3).Row
  23.         arr = .Range("a1:k" & r)
  24.     End With
  25.     For i = 3 To UBound(arr)
  26.         If Len(arr(i, 11)) = 0 And arr(i, 8) > 0 Then
  27.             x = arr(i, 5)
  28.             If Not d.exists(x) Then
  29.                 n = n + 1
  30.                 d(x) = n
  31.                 brr(n, 1) = n
  32.                 brr(n, 2) = x
  33.             End If
  34.             brr(d(x), 3) = brr(d(x), 3) + arr(i, 8)
  35.         End If
  36.     Next
  37.    
  38.     With Sheets("上月库存")
  39.         r = .[b65536].End(3).Row
  40.         arr = .Range("a1:c" & r)
  41.     End With
  42.     For i = 3 To UBound(arr)
  43.         x = arr(i, 2)
  44.         If d(x) > 0 Then brr(d(x), 5) = arr(i, 3)
  45.     Next
  46.    
  47.     [a3:f1000] = ""
  48.     [a3].Resize(n, 6) = brr
  49.     [f3].Resize(n, 1).Formula = "=rc[-3]+rc[-1]-rc[-2]"
  50. End Sub
复制代码

数据统计表.rar

219.73 KB, 下载次数: 18

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 23:15 , Processed in 0.276866 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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