所以我正在做一个宏来做一堆事情。一件事是从sheet2中找到sheet1中单元格的重复项。给定工作表1中的columnA,工作表2中的列B中的任何值是否与工作表sheet1中的任何值匹配。

我知道这里有删除重复项,但我只想标记而不是删除。

我在考虑过滤的问题。我知道您在过滤时可以选择多个条件,因此,如果您有一个包含20个不同值的列,则可以在过滤器中选择5个值,它将为特定列显示具有这5个值的行。所以我记录了一个宏,并检查了代码,我发现它使用字符串数组,其中要搜索的每个值都在字符串数组中。有什么方法可以只指定整个列并将每个值添加到字符串数组?

提前致谢

最佳答案

这是将项目加载到数组中的三种不同方式。第一种方法要快得多,但只需将所有内容存储在列中。但是,您必须对此小心,因为它会创建一个多维数组,该数组不能传递给AutoFilter。

方法1:

Sub LoadArray()
    Dim strArray As Variant
    Dim TotalRows As Long

    TotalRows = Rows(Rows.Count).End(xlUp).Row
    strArray = Range(Cells(1, 1), Cells(TotalRows, 1)).Value

    MsgBox "Loaded " & UBound(strArray) & " items!"
End Sub

方法2:
Sub LoadArray2()
    Dim strArray() As String
    Dim TotalRows As Long
    Dim i As Long

    TotalRows = Rows(Rows.Count).End(xlUp).Row
    ReDim strArray(1 To TotalRows)

    For i = 1 To TotalRows
        strArray(i) = Cells(i, 1).Value
    Next

    MsgBox "Loaded " & UBound(strArray) & " items!"
End Sub

如果您提前知道这些值,并且只想将它们列出在变量中,则可以使用Array()分配一个变体
Sub LoadArray3()
    Dim strArray As Variant

    strArray = Array("Value1", "Value2", "Value3", "Value4")

    MsgBox "Loaded " & UBound(strArray) + 1 & " items!"
End Sub

关于vba - 将整个列(列中的每个值)放入数组中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21268383/

10-09 08:35
查看更多