[英]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.