相关疑难解决方法(0)

Excel VBA性能 - 100万行 - 在不到1分钟的时间内删除包含值的行

我试图在不到一分钟的时间内找到一种方法来过滤大数据并删除工作表中的行

目标:

  • 在第1列中查找包含特定文本的所有记录,然后删除整行
  • 保持所有单元格格式(颜色,字体,边框,列宽)和公式

.

测试数据:

测试数据:

.

代码如何工作:

  1. 首先关闭所有Excel功能
  2. 如果工作簿不为空,并且要删除的文本值存在于第1列中

    • 将列1的已使用范围复制到数组
    • 向后迭代数组中的每个值
    • 当找到匹配时:

      • 将单元格地址添加到格式的tmp字符串中 "A11,A275,A3900,..."
      • 如果tmp变量长度接近255个字符
      • 使用删除行 .Range("A11,A275,A3900,...").EntireRow.Delete Shift:=xlUp
      • 将tmp重置为空并继续前进到下一组行
  3. 最后,它将所有Excel功能重新打开

.

主要问题是删除操作,总持续时间应低于一分钟.任何基于代码的解决方案都是可以接受的,只要它在1分钟内执行即可.

这将范围缩小到极少数可接受的答案.已经提供的答案也非常简短,易于实施.一个人在大约30秒内执行操作,因此至少有一个答案提供了可接受的解决方案,其他人可能会发现它也很有用

.

我的主要初始功能:

Sub DeleteRowsWithValuesStrings()
    Const MAX_SZ As Byte = 240

    Dim i As Long, j As Long, t As Double, ws As Worksheet
    Dim memArr As Variant, max As Long, tmp As String

    Set ws = Worksheets(1)
    max = GetMaxCell(ws.UsedRange).Row
    FastWB True:    t = Timer

    With ws
        If max > 1 Then …
Run Code Online (Sandbox Code Playgroud)

excel performance vba excel-vba

32
推荐指数
3
解决办法
3万
查看次数

标签 统计

excel ×1

excel-vba ×1

performance ×1

vba ×1