ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: huagnzhailing

[求助] 请问如何用程序代替公式以便提高速度?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-26 22:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2012-6-24 11:15
谢谢测试,如果速度没有提高就没有实际意义
请楼主用大数据测试下面两个程序:

ZHAO老师,今天下午我在办公室测试的数据如下:
当"数据库.森田总表"为60000行,"物料"为20行时:一个字典用时13.90625, 6个字典不祥,运行时间太久,终止运行了

当"数据库.森田总表"为60000行,"物料"为10000行时:一个字典用时19.0625, 6个字典不祥,运行时间太久,终止运行了

当"数据库.森田总表"为60000行,"物料"为50000行时:一个字典用时34.2171, 6个字典不祥,未测试

当"物料"表为20行,"数据库,森田总表"为10000行时,6个字典用时7.9375,一个字典没测试
当"物料"表为10000行,"数据库,森田总表"为20行时,6个字典用时2.59375,一个字典没测试

TA的精华主题

TA的得分主题

发表于 2012-6-26 22:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
huagnzhailing 发表于 2012-6-26 22:02
ZHAO老师,今天下午我在办公室测试的数据如下:
当"数据库.森田总表"为60000行,"物料"为20行时:一 ...

测试结果说明,就大数据而言,字典使用越多速度越慢,所以能少用就尽量少用

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-27 19:17 | 显示全部楼层
本帖最后由 huagnzhailing 于 2012-6-27 19:18 编辑
zhaogang1960 发表于 2012-6-26 22:32
测试结果说明,就大数据而言,字典使用越多速度越慢,所以能少用就尽量少用


ZHAO老师,经过测试我感觉主要还是数据库的数据是太大了,运行才比较慢,如果能有什么程序,点一下按钮,就能删除不想要的数据就好了.具体要求在附件内的"数据库.森田总表"里了,我只会写一些删除空格所在的行这样程序,复杂点的就要再学习了.

另,测试中,我发现程序貌似有点漏洞,具体我写在附件中的"物料"工作表内了 字典测试.rar (20.3 KB, 下载次数: 11)

TA的精华主题

TA的得分主题

发表于 2012-6-27 19:41 | 显示全部楼层
  1. Sub Macro1() '1个字典
  2.     Dim ar, br(), i&, j&, cr, dr, er, tt
  3.     tt = Timer
  4.     Dim d As Object
  5.     Set d = CreateObject("Scripting.Dictionary")
  6. '    ar = Range([b6], [b6].End(4))
  7.     ar = Range([b1], [b65536].End(3))
  8.     ReDim br(1 To UBound(ar), 1 To 5)
  9.     cr = Sheets("数据库.在途量").Range("e4:j" & Sheets("数据库.在途量").[j65536].End(3).Row)
  10.     dr = Sheets("数据库.IQC在检").Range("a4:c" & Sheets("数据库.IQC在检").[c65536].End(3).Row)
  11.     er = Sheets("数据库.森田总表").Range("c4:s" & Sheets("数据库.森田总表").[s65536].End(3).Row)
  12.     For i = 6 To UBound(cr)
  13.         d(cr(i, 1)) = d(cr(i, 1)) + cr(i, 6)
  14.     Next
  15.     For i = 1 To UBound(dr)
  16.         d("A" & dr(i, 1)) = dr(i, 3)
  17.     Next
  18.     For i = 1 To UBound(er)
  19.         If Not d.exists("B" & er(i, 1)) Then d("B" & er(i, 1)) = er(i, 12)
  20.         If Not d.exists("C" & er(i, 1)) Then d("C" & er(i, 1)) = er(i, 17)
  21.         If Not d.exists("D" & er(i, 1)) Then d("D" & er(i, 1)) = er(i, 14)
  22.         d("E" & er(i, 1)) = er(i, 5)
  23.     Next
  24.     For j = 6 To UBound(ar)
  25.         i = j - 5
  26.         If d.exists(ar(i, 1)) Then br(i, 1) = d(ar(i, 1)) Else br(i, 1) = 0
  27.         If d.exists("A" & ar(i, 1)) Then br(i, 2) = d("A" & ar(i, 1)) Else br(i, 2) = 0
  28.         If d.exists("B" & ar(i, 1)) Then br(i, 3) = d("B" & ar(i, 1)) Else br(i, 3) = 0
  29.         br(i, 4) = d("C" & ar(i, 1))
  30.         br(i, 5) = d("D" & ar(i, 1))
  31.         ar(i, 1) = d("E" & ar(i, 1))
  32.     Next
  33.     Range("E6:E65536,J6:j65536").ClearContents
  34.     [j6].Resize(i, 5) = br
  35.     If i > 1 Then [e6].Resize(i - 1) = ar Else [e6] = ar(1, 1)
  36.     MsgBox Timer - tt
  37. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-6-27 19:41 | 显示全部楼层
请看附件
字典测试.rar (20.9 KB, 下载次数: 35)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-27 21:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2012-6-27 19:41
请看附件

测试了一下,当B6单元格为空时,提取结果出现错误

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-27 21:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 huagnzhailing 于 2012-6-27 21:06 编辑
zhaogang1960 发表于 2012-6-27 19:41
请看附件


还想请教老师一个问题,为什么出现 MsgBox Timer - tt 对话框以后,光标一直处于等待状态?

TA的精华主题

TA的得分主题

发表于 2012-6-27 21:19 | 显示全部楼层
字典测试.rar (18.58 KB, 下载次数: 15)

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-6-27 21:27 | 显示全部楼层
zhaogang1960 发表于 2012-6-27 21:19

还是有点小问题,当B6单元格输入"1"进行测试,提取结果出现错误

TA的精华主题

TA的得分主题

发表于 2012-6-27 22:18 | 显示全部楼层
huagnzhailing 发表于 2012-6-27 21:27
还是有点小问题,当B6单元格输入"1"进行测试,提取结果出现错误

字典测试.rar (19.42 KB, 下载次数: 40)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-27 20:47 , Processed in 0.049490 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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