所以我正在做一个宏来做一堆事情。一件事是从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/