2015-10-08 2 views
-3

У меня есть список элементов в Excel: 42k строк и 15 столбцов. Многие предметы были перечислены дважды, а некоторые даже трижды, так как продукт тот же, но продавец отличается.Каким будет лучший способ вырезать/вставить дубликаты строк на следующий лист?

Что я хочу сделать, это проверить только 8 столбцов (a, b, c, d, f, h, i, k), чтобы решить, является ли строка дублирующей или нет. Если он имеет точное соответствие с другой строкой для соответствующих 8 столбцов, я хочу вырезать вставку как/все соответствующие строки в следующий лист (все 15 столбцов), где я могу вручную объединить/удалить/разделить в зависимости от элемента.

+0

Это очень широкий вопрос. Вы уже пытались использовать его? С какими областями вы столкнулись? –

+0

vba не моя чашка чая. ищу помощь – Ahmed

+0

Вы были здесь достаточно долго, чтобы знать, что сначала вам нужно помочь себе, прежде чем СО поможет вам. Просто потому, что VBA - это не ваша чашка, это не значит, что вы не можете попробовать. – findwindow

ответ

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 за помощью.

0

Создайте сводную таблицу в табличной форме и промежуточные итоги только на ColumnA, счет ColumnA в VALUES и все столбцы B, C, D, F, H, I и K для ROWS. Везде, где счетчик больше 1, разверните его на этом большем значении. Каждый раз, когда вы должны создать лист с только записи определяется быть кратно в соответствии с вашими критериями:

SO33019442 example

Хотя это копия/вставить вместо вырезать/вставить.

Смежные вопросы