ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 谁能帮我提高程序运行效率?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-12-14 21:23 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我将代码贴上,同时也传上附件。。。要求是在表一里批量输入单号及入库数量,执行程序后先判断表二中入库数量与出库数量列是否为空,如果为空则直接将单号与入库数量填入相应的行,如果不为空则另一行填入相应的数据。。。。出库程序也是一样。。。多谢大虾指点。。。我写的代码能正确执行,可是感觉速度低,因为执行了好多循环与嵌套。。。。有没有高手可以用数组的方法提高效率??????或者别的方法,只要能提高速度就行。。。
Sub 入库修改后()
Dim a, b, c, d As Integer
Dim bb, cc, dd As String
Dim a1, b1 As Range
a = Sheets(1).Cells(65000, 11).End(xlUp).Row '判断总行数
Worksheets(1).Activate
Application.ScreenUpdating = False
For b = 2 To a '每行都判断
    If Cells(b, 11) <> "" Then
        aa = Cells(b, 2)
            c = Sheets(2).Range("B:B").Cells.Find(aa).Row
            ff = "=countif(进出库明细表!B:B,""" & aa & """)"
            Cells(1, 13).Formula = ff
            d = Cells(1, 13).Value
        If Sheets(2).Cells(c, 7) = "" And Sheets(2).Cells(c, 9) = "" Then
            Sheets(2).Cells(c, 8) = Cells(b, 10)
            Sheets(2).Cells(c, 9) = Cells(b, 11)
            Sheets(2).Cells(c, 5) = Date
            Else
                Sheets(2).Rows(c + d).Insert
                Sheet2.Range(Sheet2.Cells(c + d, 1), Sheet2.Cells(c + d, 4)).Value = Sheet2.Range(Sheet2.Cells(c, 1), Sheet2.Cells(c, 4)).Value
                Sheets(2).Cells(c + d, 8) = Cells(b, 10)
                Sheets(2).Cells(c + d, 5) = Date
                Sheets(2).Cells(c + d, 9) = Cells(b, 11)
        End If
    End If
Next b
f = 2
Do While Sheets(2).Cells(f, 1) <> ""
    Sheets(2).Cells(f, 1) = f - 1
    f = f + 1
Loop
Range("J2:K65000").Clear
Application.ScreenUpdating = True
End Sub

库存表(BAK1215).rar

260.4 KB, 下载次数: 49

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-14 21:31 | 显示全部楼层

顶一下

我用sepron 1.4G处理器 512M内存测试,如果在表一里输入超过四十行的话,程序执行真的慢,大概要一分多钟。。。。还有个问题,一般的小程序我也会编,但是我只会用循环FOR NEXT方法  而不会用数组的形式。以前单位有个哥们,几千行数据编个程序处理也就是几秒钟的事,真是佩服。可惜他写的好多程序我都没能考下来研究一下。。。。。。谁能推荐关于数组的贴子????

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-15 20:14 | 显示全部楼层

TA的精华主题

TA的得分主题

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

高手来帮帮我吧。。。

高手来帮帮我吧。。。

TA的精华主题

TA的得分主题

发表于 2008-12-15 20:47 | 显示全部楼层
请理解研究别人的代码来了解要运行的是什么样的工作是很辛苦的,你如果愿意把你的代码的目的及相关处作个说明,让别人重新写过,会省下很多时间,别人也会很乐意尝试的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-12-17 19:08 | 显示全部楼层

高手帮我更正程序

理解OOBIRD版主,我的程序应该说明的够理解了吧?附近里也有说明。。

TA的精华主题

TA的得分主题

发表于 2011-4-20 21:23 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 23:31 , Processed in 0.035079 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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