将整列(每列中的值)放在一个数组中?

use*_*942 8 excel vba duplicates excel-vba excel-2010

所以我正在做一个宏做一堆事情.有一件事是从sheet2中找到sheet1中的单元格重复.给定表1中的columnA,sheet2上columnB中的任何值都与columna sheet1中的任何值匹配.

我知道删除重复项,但我只想标记它们,而不是删除.

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

提前致谢

Rip*_*ter 15

以下是将项加载到数组中的三种不同方法.第一种方法要快得多,但只是将所有内容存储在列中.你必须要小心,因为它创建了一个多维数组,而不是可以传递给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
Run Code Online (Sandbox Code Playgroud)

方法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
Run Code Online (Sandbox Code Playgroud)

如果您提前知道这些值并且只想在变量中列出它们,则可以使用Array()分配变量

Sub LoadArray3()
    Dim strArray As Variant

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

    MsgBox "Loaded " & UBound(strArray) + 1 & " items!"
End Sub
Run Code Online (Sandbox Code Playgroud)