ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

这个VBA还有优化的空间吗?为什么要运行一天一夜!!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-4 17:34 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()
Dim arr(1 To 16 ^ 4, 1 To 2), crr(1 To 10, 1 To 4), x1&, x2&, x3&
Dim s&, y, i&, j&, k&, brr, x, m
With Sheets("sheet1")
For x1 = 1 To 20
     For x2 = 1 To 30
         For x3 = 1 To 20
                .Range("L2") = x1
                .Range("M2") = x2
                .Range("N2") = x3
                s = s + 1
                y = .Range("P6")
                arr(s, 1) = x1 & "," & x2 & "," & x3
                arr(s, 2) = y
Next x3, x2, x1
brr = Application.WorksheetFunction.Transpose(Application.Index(arr, 0, 2))
For i = 1 To 10
     x = Application.WorksheetFunction.Large(brr, i)
     For j = 1 To s
         If x = arr(j, 2) Then
             m = Split(arr(j, 1), ",")
             For k = 0 To UBound(m)
                 crr(i, k + 1) = m(k)
             Next
         End If
         crr(i, 4) = x
     Next j
Next i
End With
Sheets("Sheet2").Select
With Sheets("sheet2")
.Range("G1") = "L2"
.Range("H1") = "M2"
.Range("I1") = "N2"
.Range("J1") = "P6"
Range("G2").Resize(UBound(crr), UBound(crr, 2)) = crr
End With
End Sub

真郁闷我的附件怎么缩都超过1MB,没办法上传附件了,这个VBA的作用是赋值给L2,M2,N2经过复杂计算,得到P6的值,
然后得到最大的P6的值的十个结果,同时看到这十个结果对应的L2,M2,N2的值。如果是半年的数据,在整整计算一天,
这个VBA还有优化的空间吗?

TA的精华主题

TA的得分主题

发表于 2013-1-4 18:02 | 显示全部楼层
没有文件,其它人怎么帮你调试啊。

TA的精华主题

TA的得分主题

发表于 2013-1-4 18:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
从代码来看,不应该要这么长的时间,也许在某个时候被现在还不知道的一个恶意代码植入了。我用下面的方法解决过。供你参考:
1、建立一个文本文件
2、打开你的EXCEL 文件,但是不启用宏
3、逐页复制代码;粘贴到文本文件里面(注意分清楚是哪个工作表的代码)(对于模块、控件等也不要用“导出”的方式)
4、新建一个EXCEL文件
5、把文本文件里面的代码粘贴过来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-4 19:05 | 显示全部楼层
lhdcxz 发表于 2013-1-4 18:13
从代码来看,不应该要这么长的时间,也许在某个时候被现在还不知道的一个恶意代码植入了。我用下面的方法解 ...

我可以用什么方法把附件发给您吗?我想不大可能是有恶意代码,有可能是赋值给L2,M2,N2后运算过程太复杂,时间太长了,因为用得都是函数,半年的数据要四万多行,您看有什么办法把这些函数转化为VBA,或者有其他办法让它们运行得更快,我可以只发一个月的数据,但都要1M多,您看行吗?

TA的精华主题

TA的得分主题

发表于 2013-1-4 20:02 | 显示全部楼层
哦哦。那就算了。我对函数不算很通的。请其他人看看吧。不好意思了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-4 21:22 | 显示全部楼层
lhdcxz 发表于 2013-1-4 20:02
哦哦。那就算了。我对函数不算很通的。请其他人看看吧。不好意思了。

还是要谢谢您!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 23:48 , Processed in 0.032067 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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