[英]Compare two arrays and delete identical values
我的目标是从工作表中删除所有相同的行。
我创建了两个数组。 一个是“当前行”(1),第二个数组被一行一行地重新填充。 这部分有效。
现在我想匹配两个数组,如果它们相同,则应删除相应的行。
然后“当前行”变为 2。
For j = 1 To VarAnzahlZeilen
i = 1
For i = 1 To VarAnzahlSpalten
ReDim Preserve ArrAktuelleZeile(i - 1) As String
ArrAktuelleZeile(i - 1) = Worksheets("Filter").Cells(j, i).Value
Next i
(i+1)
For n = j + 1 To VarAnzahlZeilen
k = 1
For k = 1 To VarAnzahlSpalten
ReDim Preserve ArrDurchlaufZeile(k) As String
ArrDurchlaufZeile(k - 1) = Worksheets("Filter").Cells(n, k).Value
Next k
If Not IsError(WorksheetFunction.Match(ArrAktuelleZeile, ArrDurchlaufZeile, 0)) Then
Rows(n).Delete
End If
Next n
Next j
运行时错误 13 出现在行:
If Not IsError(WorksheetFunction.Match(ArrAktuelleZeile, ArrDurchlaufZeile, 0)) Then
我尝试了@GTPV 的想法并稍微修改了它以满足我的需要(可变范围和比较第 1-30 列)。
出现语法错误
Worksheets("Filter").Range(.Cells(1, 1), .Cells(VarAnzahlZeilen, VarNutzerSpalte))).RemoveDuplicates Columns:=Array(1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30), Header _
:=xlNo
一种可能性是使用 Excel 中的内置函数来删除重复项:
Worksheets("Filter").Range("$A$1:$C$10").RemoveDuplicates Columns:=Array(1, 3), Header _
:=xlNo
上面的示例将删除 A1:C10 范围内的所有重复项,其中重复项表示“A 列中的相同值和 C 列中的相同值”。 最后一个参数由“Columns:=Array(1,3)”参数控制。
仅根据 A 列获取唯一值将被编码为:
Worksheets("Filter").Range("$A$1:$C$10").RemoveDuplicates Columns:=Array(1), Header _
:=xlNo
根据所有列的组合获取唯一值:
Worksheets("Filter").Range("$A$1:$C$10").RemoveDuplicates Columns:=Array(1,2,3), Header _
:=xlNo
可以在 Microsoft 网站上找到有关此功能的其他帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.