为什么此VBA代码循环很慢?

时间:2018-09-11 00:16:41

标签: excel-vba

我有一个循环,遍历约15K行,检查数组中是否存在值,如果不存在则删除该行。我已经使用这个循环好几个月了。现在,每个循环大约需要2秒钟,我不知道为什么。我已经完成了通常的“将计算设置为手动”和“关闭屏幕更新”设置,但没有任何改善。

对不起,但是数据是机密的,所以我不能给你们源文件

  static reloadAndSortItems() {
    let array = [];
    const items = Store.getStoredItems();

    items.forEach(function (item) {

      // getting the stored date --> back to date object

      let episodeDate = Date.parse(item.episode);
      let parsedEpisode = new Date(episodeDate);


      array.push(parsedEpisode);



    });

    **// should not sorted at this point
    console.log('not sorted', array);**



    let tested = array.sort(function (a, b) {
      return a - b
    });
    **// should be sorted array at this point
    console.log('sorted', tested);**





  }

有什么想法吗?

Update1:​​我关闭了Excel,然后重新打开并再次开始循环。它开始快速运行,但时间越来越慢。

Update2:我隔离了循环,并一直通过线路进行F8操作。停滞的行是“ Range(“ B”&CStr(lngCounter))。EntireRow.Delete”。实际上删除该行似乎需要很长时间。

1 个答案:

答案 0 :(得分:0)

因此,我发现了另一种删除行的方法,速度更快。我使用了这里介绍的这种方法,效果很好。 https://stackoverflow.com/a/19241990/10344640

感谢Siddharth Rout发布此消息!