• VBA复制粘贴效率问题


    好久没写文章了,最近有点忙,现在华为做PRS二次开发,这两周一直在做澳大利亚的一个需求,由于这个需求比较特殊,报表中用到的102个KPI是从五张sheet也中取值,并且KPI在原始数据的sheet页中的顺序也是混乱无任何滚了的。 所以只能手动找出每个图表中的系列(基本上也就是原始数据sheet页中的KPI,个别十几个是通过计算得到的)。又由于根据不同的cluster,需要在同一张图表中显示不同的数据。也就是一张图表共不同的cluster使用。 由于图表中只需要显示最近28天的数据。这样的话,最好的办法就是从原始数据中按cluster和日期排序,然后根据选择显示的cluster,将数据拷贝到另外一个sheet页中,再将创建的图表的数据源绑定到此sheet的相应的区域。至于这个需求和怎么实现的,就不多说了。其中关于复制粘贴这块,想随便唠叨几句。 由于需要的特殊性,我们需要对每个单元格进行拷贝粘贴,28天即28行,102个KPI即102列,在加上KPI的title,时间列和cluster列,共29行,104列 开始的时候使用Range.Copy 和Range.PasteSpecial 效率很低,要8-9秒的时间,开上去excel像是假死一样,设置进度条吧,每次都显示客户肯定不乐意。 下面做个简单的测试,下面截图是源代码和执行的时间间隔: 由于我们是逐个单元格进行拷贝和粘贴的,当然如果格式没特殊需要,当然可以使用Rang.Value = Range.Value这种方式直接赋值,效率将大大的提高。下面截图是这中方式的源代码和执行的时间间隔: 这样使用时间可以缩短到1-2秒的时间,在excel上表现的也只是一闪而过。 所以:在写VBA代码的时候,无论是Cells或者Range,能使用Value赋值,尽量使用这种方式,尽可能不用copy和paste。效率也会提高很多。
  • 相关阅读:
    jQuery火箭图标返回顶部代码
    jQuery火箭图标返回顶部代码
    HTML语义化
    使用全角空格进行文本对齐
    安卓手机微信中清除页面缓存的方法
    jQuery与Vue的对比
    IDE提交Git出现husky>pre-commit错误
    IDEA将工程转为maven工程
    vscode设置tab缩进字符数
    mac系统下用nginx服务器部署页面
  • 原文地址:https://www.cnblogs.com/wanyakun/p/3403274.html
Copyright © 2020-2023  润新知