簡體   English   中英

比較兩個數組並刪除相同的值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM