【问题标题】:Move Duplicate rows into another sheet将重复的行移动到另一个工作表中
【发布时间】:2017-07-21 10:32:38
【问题描述】:

我正在寻找 vba 代码,它应该根据所有列找到重复的行并将这些行移动到另一个工作表。

就像 Excel 删除了重复函数,但我想将重复值保留在另一张表中。

任何帮助将不胜感激。

提前致谢。

【问题讨论】:

  • 到目前为止你做了什么?有代码吗?
  • 下面是我用于删除重复行的代码,但我需要删除的行进行数据验证。

标签: excel duplicates move worksheet vba


【解决方案1】:

此代码将根据 A 列剪切活动工作表上的重复行。 它将剪切的行粘贴到名为“重复”的工作表中。

 Sub CutDuplicates()
    Dim Rng As Range, i As Long
        Application.ScreenUpdating = False
        Set Rng = Range("DH2:DH" & Range("DH" & Rows.Count).End(xlUp).Row)
        For i = Rng.Rows.Count To 1 Step -1
            If Application.WorksheetFunction.CountIf(Rng, Cells(i, "DH")) > 1 Then
              lr = Sheets("Duplicates").Cells(Rows.Count, "DH").End(xlUp).Row + 1
              Rows(i).EntireRow.Cut Destination:=Sheets("Duplicates").Range("A" & lr)
              Rows(i).EntireRow.Delete
            End If
        Next i
        Application.ScreenUpdating = True
    End Sub

这是在 50 行测试表上测试的,但它也应该适用于更大的行工作表。

【讨论】:

  • 它基于 DH 列,而不是 A。
  • 我的错误,但是是模板,他必须修改它,这只是示例
  • 可以,但对初学者可能会产生误导。
  • 此代码仅检查 DH 列中的重复行,但我的要求是多列假设如果有 A、B、C、D、、、、、、、Z 列,那么它应该考虑所有 A如果所有列的数据相同,则为 Z 列,如果单个列具有不同的值,则视为重复,则将其视为唯一行。
【解决方案2】:

我有大量数据,要删除重复的行,我正在使用以下代码。列号和行号始终是动态的。

Sub DeDupe()

Dim intArray As Variant, i As Integer
Dim rng As Range
Set rng = ActiveSheet.UsedRange.Rows
With rng
    ReDim intArray(0 To .Columns.Count - 1)
    For i = 0 To UBound(intArray)
        intArray(i) = i + 1
    Next i
    .RemoveDuplicates Columns:=(intArray), Header:=xlYes
End With

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 2016-06-01
    • 2021-06-16
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多