【问题标题】:Excel/VBA performanceExcel/VBA 性能
【发布时间】:2015-03-03 20:04:34
【问题描述】:

我在 Range("E10001:E20000") 中有一组公式,我想将其复制到 Columns("F:CZ") 总共 1M 单元格。选项:

  1. 范围("E10001:E20000").复制
    Range("F10001:CZ20000").PasteSpecial xlPasteAll
  2. Range("F10001:CZ20000").formula = Range("E10001:E20000").formula
  3. Range("E10001:CZ20000").fillRight
  4. 范围("E10001:CZ20000").选择
    然后在 Excel 中按 Ctrl+R

最后,为了使工作表更轻,我用值替换公式, Range("F10001:CZ20000").Value = Range("F10001:CZ20000").Value

我注意到选项 4 比其他选项快得多。谁能解释前 3 个选项中的性能损失。请注意,我不熟悉时间函数,并使用秒时钟进行物理测量。

【问题讨论】:

    标签: performance excel vba


    【解决方案1】:

    简答:不要在 SendKeys 方法中使用快捷方式!
    更长的答案:快捷方式可能导致意外结果,在我的本地设置中,“^r”会(开始)插入表格。
    随意使用带有 starttime = Now 的计时器,在代码的开头和

    timetaken = Now - starttime
    MsgBox (Hour(timetaken) & ":" & Minute(timetaken) & ":" & Second(timetaken))
    

    但要衡量性能。
    根据经验,您的时间比系统时间更有价值,并且通过意外发送错误的指令集来破坏您的数据是永远值得冒险的。
    您使用 2 × 10,000 个单元的操作不值得优化。

    【讨论】:

    • 虽然我普遍认为人的时间更重要,但这是我正在构建的一个巨大的可重用解决方案的一部分。不仅仅是计算,甚至输入和输出的大小都是 100colx.2Mrows。 :) 只有在优化设计、算法和实现基本逻辑之后,我才关注代码性能。
    猜你喜欢
    • 2017-04-20
    • 1970-01-01
    • 2023-03-30
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多