2013-11-25 4 views
-1

Необходимо удалить все дубликаты в столбце C в зависимости от определенного диапазона в столбце B.Column C имеет две последовательные строки и две или более пустых ячейки перед следующим значением, первое значение - текст, как описание документа и строка, расположенная непосредственно под ней, имеет свое соответствующее число (обычно (6 + цифр). Удалите все дубликаты в зависимости от описания документа и номера документа. Если описание документа - это то же самое, но разные серии номеров документов, например, если первая серия документов - 654321delete все в серии 65xxxx, но сохраняйте что-либо, кроме 6xxxxx. Имеют следующие строки кода, который получает диапазон от столбца B и очищает контент только для описания документа. Но я не уверен, где ошибся. Хотелось начать с документа а затем добавьте код для проверки номера документа. Я не в состоянии сортировать первый шаг out.This коды является блоком полного кода ... Любой помощи или фирма Пушина правильного направления будет высоко ценится ...Неожиданные результаты из функции рабочего листа Countif

Do Until Range("B" & lngLastRow + 10).Value = "" 
    x = 2 
    y = x 

    Do 
    x = x + 1 
    Loop Until Range("B" & x).Value <> "" 

    For i = x To y Step -1 
    If Application.WorksheetFunction.CountIf(Range(Cells(y, "C"), Cells(i, "C")), Range("C" & i).Text) > 1 Then 
     Range("C" & i).Select 
     Selection.ClearContents 
    End If 
    Next i 

    y = y + x 
Loop 
+2

может переформатировать свой вопрос? это очень долго и трудно понять. –

+0

Включение снимка экрана на вашем листе очень поможет. –

+0

Итак, если у вас есть такие данные, как 'Desp1,655361' и' Desp1,657896' и 'Desp2,6567485' и' Desp1,642315', то что должно случиться? –

ответ

1

После повторного чтения пары Это то, что я понял из вашего вопроса. Допустим, ваш рабочий лист выглядит следующим образом

enter image description here

Теперь вы хотите, чтобы очистить содержимое Description и Number если Description является дубликатом и число имеет ту же серию, как к тому, что серии первому начал.

Если я правильно понимаю, то попробуйте это

Option Explicit 

Sub Sample() 
    Dim ws As Worksheet 
    Dim aCell As Range, bCell As Range, ClearRng As Range 
    Dim SearchString As String 
    Dim n As Long 

    '~~> Change this to the releavnt worksheet 
    Set ws = ThisWorkbook.Sheets("Sheet1") 

    '~~> Searching for this description. You can pick this 
    '~~> Value from Col B 
    SearchString = "Desp1" 

    With ws 
     '~~> Search Col C for the first match 
     Set aCell = .Columns(3).Find(What:=SearchString, LookIn:=xlValues, _ 
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
        MatchCase:=False, SearchFormat:=False) 

     '~~> If found 
     If Not aCell Is Nothing Then 
      Set bCell = aCell 
      '~~> Get the first two numbers to identify the series 
      n = Left(aCell.Offset(1).Value, 2) 

      '~~> Store the cells ina range 
      Set ClearRng = Union(aCell, aCell.Offset(1)) 

      '~~> Find Next 
      Do 
       Set aCell = .Columns(3).FindNext(After:=aCell) 

       If Not aCell Is Nothing Then 
        If aCell.Address = bCell.Address Then Exit Do 
        '~~> Check for series 
        If Left(aCell.Offset(1).Value, 2) = n Then 
         '~~> Store the cells ina range 
         Set ClearRng = Union(ClearRng, aCell, aCell.Offset(1)) 
        End If 
       Else 
        Exit Do 
       End If 
      Loop 
     End If 

     '~~> I am coloring the range red. You can use ClearRng.Clearcontents 
     If Not ClearRng Is Nothing Then ClearRng.Interior.ColorIndex = 3 
    End With 
End Sub 

ВЫВОД

enter image description here

+0

Хорошо, извиниться за неправильное оформление вопроса. Столбец B состоит из другого отдела в школе, а столбец C имеет описание документа и соответствующий номер документа. В случае таких данных, как Desp1,655361 и Desp1,657896 и Desp2,6567485 и Desp1,642315, тогда col \t umn C должен сохранить Desp1 , 657896 и Desp2, 6567485. Наибольший номер документа должен быть сохранен. – Nandu

+0

'Самый большой номер документа должен быть сохранен'. Но почему ясно 'Desp1,642315' Это из разных серий? –

+0

Обычно в серии должно быть около 0 до нескольких тысяч, но менее 10000 номеров документов. Используйте только самое высокое число. И если данные Desp1,655361, то его нижний предел будет где угодно до Desp1,645362, если существует Desp1,642315, который не будет рассмотрен. Также, если есть еще один Desp1, его числовая серия не будет находиться в 600000, но не 600000. Серия. – Nandu

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