检查单元格内容是否包含列表中的字符串

Deskjet08

我正在处理包含竞争数据的报告,并且我正在尝试删除列中的单元格D与不同工作表中指定的字符串列表不匹配的任何行到目前为止,这就是我所拥有的,虽然它有效,但速度非常慢。有没有更快或更有效的方法来做到这一点?

Dim product As String
Dim TempArray as Variant
Dim idArray() As Variant
Dim myTable As ListObject


Sub rambler()

    Application.ScreenUpdating = False
    populatingArrays
    filterID
    Application.ScreenUpdating = True

End Sub


Sub populatingArrays()

    Sheets("Competitive Set").Activate
    Set myTable = ActiveSheet.ListObjects("Table1")
    TempArray = myTable.DataBodyRange.Columns(1)
    idArray = Application.Transpose(TempArray)

End Sub

Sub filterID()

    Sheets("Report").Activate
    ActiveSheet.Range("D2").Activate

        Do While ActiveCell.Value <> ""
          product = ActiveCell.Value
          IsInArray = UBound(Filter(idArray, product))

          If UBound(Filter(idArray, product)) < 0 Then
             ActiveCell.EntireRow.Delete
           Else
             Selection.Offset(1, 0).Select
          End If

        Loop

    ActiveSheet.Name = "I&D Data"
    ActiveSheet.Range("A1").Select

End Sub

注意:我知道我不应该使用 Activate 和 Select,但我不知道如何在没有它们的情况下进行这项工作。另一件事,这段代码是部分复制粘贴的,我不确定是什么IsInArray或做什么,但是当我删除该行时,所有行都会被删除。

布鲁斯·韦恩

首先,我没有看到使用全局变量的理由。让我们将它们的范围限定到它们各自的潜艇。

其次,假设您的“报告”表中有数据D2:D100,其中单元格D101是第一个空单元格。因此,你通过一系列努力环D2D100,如果应用过滤器检查。

第三,我将参数传递给 subs 以尽可能保持范围本地化。(我也在没有测试的情况下这样做,但我认为它应该有效......)

如果这是正确的,我认为这对您来说应该运行得更快:

Option Explicit 'Forces you to declare all variables. This goes at the very top of the Module.
Sub rambler()
dim myArr as Variant
    Application.ScreenUpdating = False
    myArr = populatingArrays
    filterID(myArr)
    Application.ScreenUpdating = True
End Sub

Function populatingArrays() as Variant
Dim idArray() As Variant
Dim TempArray As Variant

    Set myTable = Sheets("Competitive Set").ListObjects("Table1")
    TempArray = myTable.DataBodyRange.Columns(1)
    idArray = Application.Transpose(TempArray)
    populatingArrays = idArray

End Sub

Sub filterID(arr as Variant)
Dim product As String
Dim myTable As ListObject
Dim lastRow As Long, i As Long

With Sheets("Report")
    lastRow = .Cells(Rows.Count, "D").End(xlUp).Row
    For i = lastRow To 1 Step -1 ' Deleting rows: it's best to start at the end and work up.
          product = .Cells(i, "D").Value
          IsInArray = UBound(Filter(arr, product))

          If IsInArray < 0 Then
             .Rows(i).EntireRow.Delete
          End If
    Next i
    .Name = "I&D Data"
End Sub

编辑:看看您是否能理解我如何删除.Select. 此外,学习/理解的一件好事是如何将参数传递给子例程。我还将 the 更改Sub populatingArrays()为 a Function,这允许我们返回一些值(而对于Sub, 要执行相同的操作,您需要一个全局变量)。逐步完成这个F8应该有助于了解它是如何工作的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查单元格是否包含列表中的子字符串-Excel 2007

来自分类Dev

Python Pandas检查单元格中列表的最后一个元素是否包含特定的字符串

来自分类Dev

Excel:检查单元格是否在文本字符串中包含数字

来自分类Dev

检查字符串是否包含在单元格值中

来自分类Dev

检查屏幕上输入的字符串中是否存在单元格内容-Python Pandas

来自分类Dev

Excel VBA在混合数据时检查单元格是否包含字符串

来自分类Dev

检查DataRow单元格是否部分包含字符串

来自分类Dev

VBA检查单元格是否包含列表中的任何内容

来自分类Dev

如何检查单元格中是否仅包含特定列表中的字符?

来自分类Dev

如何检查单元格中是否仅包含特定列表中的字符?

来自分类Dev

Google 表格:需要检查 [文本字符串] 是否存在于包含逗号分隔文本字符串的单元格中

来自分类Dev

包含字符串Pandas的单元格中的颜色

来自分类Dev

Excel:检查列中是否存在单元格字符串值,并获取对该字符串的所有单元格引用

来自分类Dev

计算单元格列表中的字符串出现

来自分类Dev

检查 B 列是否包含 A 列中存在的特定字符串,然后将其从 B 列中的单元格中删除

来自分类Dev

python中字符串单元格与列表单元格的比较

来自分类Dev

在Excel中,如何检查单元格是否至少包含列表中相同字符的两倍

来自分类Dev

如何在Excel中替换字符串并检查整个单元格字符串?

来自分类Dev

检查A列中的哪个(多个)单元格包含B列中指定的子字符串?

来自分类Dev

在Excel中如何检查范围内的所有单元格仅包含特定字符串

来自分类Dev

在Excel中,检查单元格是否与命名常量字符串列表中的一项匹配

来自分类Dev

如果行包含特定字符串,则修改表单元格内容

来自分类Dev

检查列表单元格是否包含值

来自分类Dev

检查字符串是否包含列表中的字母

来自分类Dev

检查字符串中是否包含单词列表

来自分类Dev

如何检查单元格是否包含通配符星号(*)字符

来自分类Dev

检查列的单元格是否以特定的字符串[Pandas]开头

来自分类Dev

如何根据字符串是否在另一个列表中自动填充单元格?

来自分类Dev

如何在Google表格中返回包含字符串的单元格旁边的单元格?

Related 相关文章

  1. 1

    检查单元格是否包含列表中的子字符串-Excel 2007

  2. 2

    Python Pandas检查单元格中列表的最后一个元素是否包含特定的字符串

  3. 3

    Excel:检查单元格是否在文本字符串中包含数字

  4. 4

    检查字符串是否包含在单元格值中

  5. 5

    检查屏幕上输入的字符串中是否存在单元格内容-Python Pandas

  6. 6

    Excel VBA在混合数据时检查单元格是否包含字符串

  7. 7

    检查DataRow单元格是否部分包含字符串

  8. 8

    VBA检查单元格是否包含列表中的任何内容

  9. 9

    如何检查单元格中是否仅包含特定列表中的字符?

  10. 10

    如何检查单元格中是否仅包含特定列表中的字符?

  11. 11

    Google 表格:需要检查 [文本字符串] 是否存在于包含逗号分隔文本字符串的单元格中

  12. 12

    包含字符串Pandas的单元格中的颜色

  13. 13

    Excel:检查列中是否存在单元格字符串值,并获取对该字符串的所有单元格引用

  14. 14

    计算单元格列表中的字符串出现

  15. 15

    检查 B 列是否包含 A 列中存在的特定字符串,然后将其从 B 列中的单元格中删除

  16. 16

    python中字符串单元格与列表单元格的比较

  17. 17

    在Excel中,如何检查单元格是否至少包含列表中相同字符的两倍

  18. 18

    如何在Excel中替换字符串并检查整个单元格字符串?

  19. 19

    检查A列中的哪个(多个)单元格包含B列中指定的子字符串?

  20. 20

    在Excel中如何检查范围内的所有单元格仅包含特定字符串

  21. 21

    在Excel中,检查单元格是否与命名常量字符串列表中的一项匹配

  22. 22

    如果行包含特定字符串,则修改表单元格内容

  23. 23

    检查列表单元格是否包含值

  24. 24

    检查字符串是否包含列表中的字母

  25. 25

    检查字符串中是否包含单词列表

  26. 26

    如何检查单元格是否包含通配符星号(*)字符

  27. 27

    检查列的单元格是否以特定的字符串[Pandas]开头

  28. 28

    如何根据字符串是否在另一个列表中自动填充单元格?

  29. 29

    如何在Google表格中返回包含字符串的单元格旁边的单元格?

热门标签

归档