【问题标题】:how to optimize speed excel 2007 (±20,000 rows)如何优化速度 excel 2007 (±20,000 行)
【发布时间】:2015-03-03 03:48:26
【问题描述】:

我正在处理一个包含两列(旧 URL 和新 URL)的 Excel 文件。但它包含大约 20,000 行。

我还有另一个包含大约 400 个旧/新 URL 的文件需要导入到 ±20,000 行的大文件中。

我必须进行各种处理,例如: - 查找所有重复的行(相同的两列不止一次......)。该功能将位于一列中,每次我添加 1 行以检查文件中是否已存在该 URL 组合时运行该功能会很好

请注意,我已经将工作表变成了表格。

现在有 2 个问题:

1) 我应该从 ±20,000 行表和 ±400 行表中进行某种 vlookup,还是 VBA?我不知道执行此操作的最佳方法是什么(即:如果 ±400 行表中的那一行不在 ±20,000 行表中,则添加它...)。我应该在 VBA 中使用 vlookups 还是填充数组(速度方面)?如果我使用vlookup,确实可以将vlookup函数放在一张表中,在每一行中引用它,而不是直接在每一行中放置一个vlookup函数?

2) 我如何优化 20,000 行的工作表,因为现在,每次我想排序或过滤时,重绘都需要很长时间,而且它会冻结我的电脑!

感谢您的帮助。

【问题讨论】:

    标签: excel vba vlookup


    【解决方案1】:

    首先要忽略需要添加的 400 行表中的欺骗,对大表使用 COUNTIFS 公式,然后按此值排序并仅复制值小于 1 的内容(或错误)。

    其次,我可能会在大表中做同样的事情,但引用自身,任何值高于 1 的东西都是骗子。

    最后,20,000 行表中有公式吗?我可以设置一个 20,000 行表,在 A1:A20,000 范围内只有一个“1”,并且在上面做任何事情都会非常快。这一切都取决于您在那里拥有哪些数据以及您可以采取哪些措施来减少系统的负载(即,如果不再需要计算公式,则将其转换为值)

    【讨论】:

      【解决方案2】:

      Excel 2007 有一个内置功能和 VBA,您可以根据自己的情况使用:Range.RemoveDuplicates数据 选项卡 -> 数据工具 组 -> 删除重复项

      例如数据:

      点击删除重复项按钮:



      你就完成了!

      等效的 VBA 是:

      ActiveSheet.Range("$A$1:$B$10").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
      

      注意 1 和 2 不代表 A 列和 B 列。它表示所选范围的列。

      如果您的工作表仅包含 2 列,则可以改用 UsedRange

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-02
        • 2011-08-01
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多