ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

为何VBA运行突然慢了20多倍?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-9-13 14:38 | 显示全部楼层 |阅读模式

突然发现VBA对一列数据处理得超慢~~ 慢过其他列20多倍。

看不出原因,估计是此列被其他引用。

比如:现在发现B列数据变得很蜗牛~! 想查询一下,到底有哪个单元格 公式中有含有/引用 B列的数据??请问这个怎么实现?

TA的精华主题

TA的得分主题

发表于 2005-9-13 15:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

运行前把'自动重算'改成'人工重算'试试.

[em05]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-14 00:33 | 显示全部楼层
以下是引用Long_III在2005-9-13 14:49:00的发言:

最好上传附件看看!也许代码还可以提提速呢

我觉得这个问题是很重要的。于是花了不少时间,去掉其他附属,总算把体积减小了好多;

希望Long_III 大侠能够给代码的执行 提高提高速度!

在下 巨谢~~~

U0gptB0b.rar (48.34 KB, 下载次数: 23)

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-14 10:40 | 显示全部楼层
以下是引用Long_III在2005-9-14 8:38:27的发言:

不明白计算过程,也就没法优化

建议楼主详细说明算法!

好的,作了说明。

同时把一些统计加上去,不然VBA出结果也等于没有用。这时速度的问题变得非常明显,像蜗牛一样~~

Ss5Ulx2B.rar (54 KB, 下载次数: 12)

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-14 10:43 | 显示全部楼层
以下是引用雪兰君在2005-9-13 14:38:30的发言:

突然发现VBA对一列数据处理得超慢~~ 慢过其他列20多倍。

看不出原因,估计是此列被其他引用。

比如:现在发现B列数据变得很蜗牛~! 想查询一下,到底有哪个单元格 公式中有含有/引用 B列的数据??请问这个怎么实现?

上面提供的文件并不是只有B列数据变得很蜗牛~ 是全部都这样(与B列无关)。—— 先说明一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-14 19:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用Long_III在2005-9-14 10:58:37的发言:

我只知道第一步就是确定你的每行数是否符合你的条件,如果符合就显示yes,否则为no

如果符合就在F列显示yes,否则F列不显示。 但G列会为no。

首先插点文字,要说一下这个VBA的目的。它是用来统计4列不同条件下,4个条件同时符合,的数据之间的出现间隔。行差。

这4列条件区域就是I2:R5,可以手工输入,因为经常更改条件的,不把条件固化到VBA里面。

好了,接着说了:

居然已经在符合条件的数据 标明了Yes,

那么离结果就不远了:计算Yes的行差,程序就结束。

这个在第 6 楼 文件里面有详细标注。

谢谢Long_III ~

[此贴子已经被作者于2005-9-14 19:27:25编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-15 23:24 | 显示全部楼层

今天都在测试一下Long_III 的代码实效;

发觉太快了,而且不像他们几个人搞的,要花长的一笔代码来计算yes与及no的行差。

只是用了几个字节就搞定了: m = m + 1 If m = 4 And Not p Then arr1(i, 2) = "No" If i Mod 4 = 0 Then m = 0: p = False

不过没有看到有“Yes”,可能是Long_III 大侠 不用这个方法。

速度快的不得了,在有COUNTIF的时候表现卓著。让我怀疑 是不是 数据结果出了问题,我拷贝结果、比较一下了

目前一个失误也没有,真是佩服~!

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-15 23:56 | 显示全部楼层

刚才说出来了:这是execl home和 office俱乐部 几个高手们、弟兄们 搞出来的; 为什么这样?因为使用的时候 有问题。有时高手们不在线,其他人出主意整出来的。

比如要计算 百位 个位 789配 0-6的时候,就是70,07都是符合条件时,这VBA一点办法都没有。

百位 个位 789 0到6 和 百位 个位 0到6 789

这样 无法统计,(VBA会把以前的结果清除)

所以 我自己把代码拆成几部分。 统计了百位(789)个位(0-6),保留YES,不马上进行YES的行差计算; 再计算百位(0-6)个位(789)。补充上YES。然后,在进行YES的行差计算,2次得到结果。

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-16 00:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

有的时候还要从结果中除去。

比如统计

百位 个位 0到6 0到6 但不含同时相等

就是把 00、11、22……66 除掉

这个时候 只好分了8个步骤,输入百位0个位0,然后用VBA找到这个条件后,命令在F列把它消掉;

然后输入百位=1个位=1,操作一遍;再输入百位=2个位=2……直到百位=6、个位=6,共7步。

最后再计算行差

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

为何VBA运行突然慢了20多倍?

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-9-16 00:32 | 显示全部楼层

不知道 Long_III 有没有办法 把我这些笨方法搞定。

上传,真正使用的文件,里面独立了 7、8个模块~~ 没办法,不太敢麻烦别人,速度慢一点就慢一点,用笨办法。

有请 Long_III 费心指教~ 多谢叻

gowFqdhp.rar (80.31 KB, 下载次数: 7)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-24 17:15 , Processed in 0.040369 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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