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)