小编pau*_*ica的帖子

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万
查看次数

昏暗的字典.编译错误:未定义用户定义的类型

你能帮忙解决这个问题吗?每当我运行这个宏,它停在:

Dim authResult As Dictionary
Run Code Online (Sandbox Code Playgroud)

出现以下错误消息:编译错误:未定义用户定义的类型.

我以前没有使用过字典类型,我试图从示例宏中重用这段代码.

此脚本的目的是使用excel对网站进行休息调用,以便我可以下载历史数据.我目前卡在登录部分.

Sub Login()

    Dim userName As String
    Dim password As String
    Dim apiKey As String

    userName = "username"
    password = "password"
    apiKey = "key123"

    'activityTextbox.Text = ""
    'clearData

    Dim authResult As Dictionary
    Set authResult = restClient.authenticateAccount(userName, password, apiKey)
    If Not authResult Is Nothing Then
        'appendActivity "Connected"
        ' Configure Excel to pull streaming updates as often as possible
        Application.RTD.ThrottleInterval = 0
        ' Uncomment for real-time prices - this is very CPU intensive
        ' Buffer …
Run Code Online (Sandbox Code Playgroud)

rest excel vba

8
推荐指数
1
解决办法
1万
查看次数

搜索范围并替换VBA中包含特定字符串的单元格内容

我正在尝试浏览excel电子表格中包含字符串的一系列单元格.如果特定单元格包含特定字符串,我想用相同的字符串替换整个单元格.我打出了我认为应该起作用的东西,然而我什么都没得到.任何帮助,将不胜感激!

Sub Supportclean()

    Dim c As Range
    Dim celltext As String

    For Each c In Range("E:E")
        If InStr(1, celltext, "horse") > 0 Then
            Range(c) = "horse"
        End If
    Next c
End Sub
Run Code Online (Sandbox Code Playgroud)

非常感谢!

excel vba excel-vba

2
推荐指数
1
解决办法
265
查看次数

标签 统计

excel ×3

vba ×3

excel-vba ×2

performance ×1

rest ×1