Удалите дублированные строки, если в строке R-го столбца в Excel 2007 vba было 2 значения - PullRequest
0 голосов
/ 16 августа 2011
ActiveSheet.Range(cells("$2", "$A"), cells("$" & CStr(mowz), "$Q"))._
RemoveDuplicates                         
Columns:=Array(1, 2, 6, 7, 8, 9), Header:=xlYes 

Этот макрос, который я записал, и использующий его для удаления дубликатов в Excel 2007 vba. Но я получил новую задачу для решения. То есть я должен удалить дублирующиеся строки, если и только если его столбец «Rth» имеет значение 2 в нем, иначе он не должен удалять его, даже если он является дубликатом

Есть ли способ поместить условие в макрос дублирующихся строк? Пожалуйста, дайте мне знать. И любые предположения принимаются

В моем листе у меня 16 столбцов, и приведенный выше макрос удаляет дубликаты, если столбцы 1,2,6,7,8,9 имеют одинаковые значения, но дело в том, что он должен удалить его, если в нем есть все 6 столбцы дублируются, а также значение «2» в своем столбце Rth, и его не следует удалять, если столбец Rth имеет какое-либо другое значение, даже если все шесть столбцов совпадают.

1 Ответ

1 голос
/ 16 августа 2011

Я не знаю о вашем другом коде, поэтому я не могу интегрировать это, но вот sub (), который будет проходить через ваш столбец R, и если он найдет «2» внутри, он удалит всю строку , Вы всегда можете добавить это к своему другому коду, добавив к нему «Call Delete2s» («call» не является обязательным, но я склонен включать его).

Sub Delete2s()
Range(Cells(1, "R"), Cells(Rows.Count, "R").End(xlUp)).Select

Dim lastRow As Long
lastRow = ActiveSheet.UsedRange.Rows.Count

For i = lastRow To 1 Step -1
    If Selection.Rows(i).Value = 2 Then
        Selection.Rows(i).EntireRow.Delete
    End If
Next 
End Sub

Как это работает : Он находит последнюю ячейку, использованную в столбце R (вы можете настроить это), а затем перебирает ее в обратном направлении (это нужно делать при удалении ячеек, в противном случае вы запутаетесь вверх по кругу). Если значение равно 2, удаляется вся строка!

...