Excel精英培训网

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

[已解决]求公式计算部份(SUMIF部份)用VBA代码实现?

[复制链接]
发表于 2012-9-6 15:19 | 显示全部楼层 |阅读模式
     求把表中公式计算部份(SUMIF部份)用VBA代码实现,不要说用公式更快,就是因为销售明细数量太多,这只是我抽取的一部份,用公式导致运算得很慢,想改回VBA代码!谢谢了,各位老师帮下忙、、、注意啊!因为此表要整批数据复到其他表应用,所以客户排列最好一经按某次排例就不要随意变化!
附件: 公式变代码.rar (10.42 KB, 下载次数: 46)
发表于 2012-9-8 20:37 | 显示全部楼层    本楼为最佳答案   
  1. Sub SalesSum()
  2. Dim dSales, dIncome1, dIncome2, i As Integer, j As Integer, k, arr, m As Integer, Temp
  3. Set dSales = CreateObject("Scripting.Dictionary")
  4. Set dIncome1 = CreateObject("Scripting.Dictionary")
  5. Set dIncome2 = CreateObject("Scripting.Dictionary")
  6. arr = Sheets("销售明细").Range("A3:K" & Sheets("销售明细").Cells(65536, 1).End(xlUp).Row)
  7. For m = 1 To UBound(arr, 1)
  8.     Temp = dSales(arr(m, 2))
  9.     Temp = dIncome1(arr(m, 2))
  10.     Temp = dIncome2(arr(m, 2))
  11. Next m
  12. For j = 1 To 7
  13.     For i = 1 To UBound(arr, 1)
  14.         If CStr(arr(i, 1)) = CStr(2012 & Cells(2, j * 3 - 1)) Then
  15.                 dSales(arr(i, 2)) = dSales(arr(i, 2)) + arr(i, 4)
  16.                 dIncome1(arr(i, 2)) = dIncome1(arr(i, 2)) + arr(i, 7) + arr(i, 8)
  17.                 dIncome2(arr(i, 2)) = dIncome2(arr(i, 2)) + arr(i, 10) + arr(i, 11)
  18.         End If
  19.     Next i
  20.     Cells(4, j * 3 - 1).Resize(dSales.Count, 1) = Application.Transpose(dSales.Items)
  21.     Cells(4, j * 3).Resize(dSales.Count, 1) = Application.Transpose(dIncome1.Items)
  22.     Cells(4, j * 3 + 1).Resize(dSales.Count, 1) = Application.Transpose(dIncome2.Items)
  23.     For Each k In dSales.keys
  24.         dSales(k) = 0
  25.         dIncome1(k) = 0
  26.         dIncome2(k) = 0
  27.     Next
  28. Next j
  29. Cells(4, 1).Resize(dSales.Count, 1) = Application.Transpose(dSales.keys)
  30. Set dSales = Nothing
  31. Set dIncome1 = Nothing
  32. Set dIncome2 = Nothing
  33. End Sub
复制代码
公式变代码.rar (16.06 KB, 下载次数: 84)
回复

使用道具 举报

 楼主| 发表于 2012-9-10 08:30 | 显示全部楼层
suye1010 发表于 2012-9-8 20:37

谢谢!谢班主日理万机中抽时间为我们排忧解难!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 11:28 , Processed in 0.266174 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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