首页 > 解决方案 > 删除 Excel 工作表中重复行的宏不起作用

问题描述

我有一个宏,它是更大代码的一部分。一旦将所有数据复制到其中,它旨在从“确认层”表中删除重复项。不幸的是,整个代码的这一部分不起作用。谁能告诉我是什么阻止了它或如何解决它?

工作表有 A - X 列,我需要宏来删除任何重复的行

当我手动完成此重复删除时,我唯一需要匹配的列是 A、B 和 H,因为当这 3 个匹配时,该行是重复的。

这是代码

Sub FinishUP()

Application.DisplayAlerts = False
'Worksheets("Criteria").Delete
Application.DisplayAlerts = True

Worksheets("Confirmed Lays").Activate
    Range("a:x").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), Header:=xlYes

End Sub

非常感谢

标签: excelduplicates

解决方案


无需激活工作表(除非是故意的)

并将 columns: array 限制为您需要它们匹配重复项的列号

编辑:为了只使用数据范围,找到最后一行

代码:

Public Sub FinishUP()

    Dim targetSheet As Worksheet
    Dim targetRange As Range

    Dim lastRow As Long

    ' Assuming the target sheet is in the same workbook that's calling the macro
    Set targetSheet = ThisWorkbook.Worksheets("Confirmed Lays")

    ' Find last row
    lastRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row

    ' Define the range to remove the duplicates from
    Set targetRange = targetSheet.Range("A1:X" & lastRow)

    ' Turn off alerts if you're going to do something that requires it
    Application.DisplayAlerts = False

    targetRange.RemoveDuplicates Columns:=Array(1, 2, 8), Header:=xlYes

    ' DoSomething else?

    Application.DisplayAlerts = True

End Sub

试试看,让我知道它是否有效。


推荐阅读