将重复行剪切/粘贴到下一个工作表的最佳方法是什么?

时间:2015-10-08 15:00:43

标签: excel excel-vba vba

我在Excel中有一个项目列表:42k行和15列。很多物品已被列出两次甚至三次,因为产品相同但卖家不同。

我想要做的只是检查8列(a,b,c,d,f,h,i,k)以确定该行是否重复。如果它与相应的8列的另一行完全匹配,我想将两个/所有匹配的行粘贴到下一个工作表(所有15列)中,我可以手动合并/删除/分离,具体取决于项目。 / p>

2 个答案:

答案 0 :(得分:0)

以表格形式创建数据透视表,仅在ColumnA上创建小计,在VALUES中创建ColumnA的计数,为ROWS创建所有列B,C,D,F,H,I和K.只要计数大于1,就可以向下钻取更大的值。每次你应该根据你的标准创建一个只有确定为多个条目的工作表:

SO33019442 example

虽然这是 copy / paste而不是 cut / paste。

答案 1 :(得分:0)

任何想要完成类似工作的人。

数字表示相应的列。

Sub MG10Oct47()
Dim Rng As Range, Dn As Range, c As Long, nRng As Range
Set Rng = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
For Each Dn In Rng
   oTxt = Join(Application.Index(Dn.Resize(, 12).Value, 0, Array(1, 2, 5, 6, 7, 8, 9, 10, 12)), ",")
    If Not .Exists(oTxt) Then
        .Add oTxt, Dn
    Else
        If nRng Is Nothing Then Set nRng = Union(.Item(oTxt), Dn) Else Set nRng = Union(nRng, .Item(oTxt), Dn)
    End If
Next
If Not nRng Is Nothing Then
For Each Dn In nRng
    c = c + 1
    Sheets("sheet2").Cells(c, 1).Resize(, 16).Value = Dn.Resize(, 16).Value
Next Dn
nRng.EntireRow.Delete
End If
End With
End Sub

感谢@MickG的帮助。